acryl-datahub 1.2.0.4rc1__py3-none-any.whl → 1.2.0.4rc2__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 acryl-datahub might be problematic. Click here for more details.

Files changed (29) hide show
  1. {acryl_datahub-1.2.0.4rc1.dist-info → acryl_datahub-1.2.0.4rc2.dist-info}/METADATA +2520 -2520
  2. {acryl_datahub-1.2.0.4rc1.dist-info → acryl_datahub-1.2.0.4rc2.dist-info}/RECORD +29 -29
  3. datahub/_version.py +1 -1
  4. datahub/api/entities/dataset/dataset.py +3 -3
  5. datahub/api/entities/external/restricted_text.py +3 -3
  6. datahub/api/entities/forms/forms.py +3 -3
  7. datahub/api/entities/structuredproperties/structuredproperties.py +2 -2
  8. datahub/cli/quickstart_versioning.py +1 -1
  9. datahub/ingestion/api/auto_work_units/auto_ensure_aspect_size.py +1 -1
  10. datahub/ingestion/source/abs/config.py +1 -1
  11. datahub/ingestion/source/abs/datalake_profiler_config.py +1 -1
  12. datahub/ingestion/source/aws/tag_entities.py +2 -2
  13. datahub/ingestion/source/data_lake_common/path_spec.py +1 -2
  14. datahub/ingestion/source/hex/hex.py +1 -1
  15. datahub/ingestion/source/iceberg/iceberg.py +4 -4
  16. datahub/ingestion/source/powerbi_report_server/report_server_domain.py +2 -4
  17. datahub/ingestion/source/redshift/datashares.py +1 -1
  18. datahub/ingestion/source/slack/slack.py +7 -14
  19. datahub/ingestion/source/snowflake/snowflake_lineage_v2.py +4 -4
  20. datahub/ingestion/source/unity/config.py +36 -1
  21. datahub/ingestion/source/unity/proxy.py +332 -46
  22. datahub/ingestion/source/unity/proxy_types.py +12 -2
  23. datahub/ingestion/source/unity/source.py +91 -34
  24. datahub/ingestion/source/unity/tag_entities.py +2 -2
  25. datahub/ingestion/source/usage/starburst_trino_usage.py +2 -2
  26. {acryl_datahub-1.2.0.4rc1.dist-info → acryl_datahub-1.2.0.4rc2.dist-info}/WHEEL +0 -0
  27. {acryl_datahub-1.2.0.4rc1.dist-info → acryl_datahub-1.2.0.4rc2.dist-info}/entry_points.txt +0 -0
  28. {acryl_datahub-1.2.0.4rc1.dist-info → acryl_datahub-1.2.0.4rc2.dist-info}/licenses/LICENSE +0 -0
  29. {acryl_datahub-1.2.0.4rc1.dist-info → acryl_datahub-1.2.0.4rc2.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
- acryl_datahub-1.2.0.4rc1.dist-info/licenses/LICENSE,sha256=9xNHpsD0uYF5ONzXsKDCuHHB-xbiCrSbueWXqrTNsxk,11365
1
+ acryl_datahub-1.2.0.4rc2.dist-info/licenses/LICENSE,sha256=9xNHpsD0uYF5ONzXsKDCuHHB-xbiCrSbueWXqrTNsxk,11365
2
2
  datahub/__init__.py,sha256=aq_i5lVREmoLfYIqcx_pEQicO855YlhD19tWc1eZZNI,59
3
3
  datahub/__main__.py,sha256=pegIvQ9hzK7IhqVeUi1MeADSZ2QlP-D3K0OQdEg55RU,106
4
- datahub/_version.py,sha256=78Li6Mh26aa0gDUQi6d6Xk7WjOV1TKcDS2-Mwtcespc,323
4
+ datahub/_version.py,sha256=hBgZ5qlWoxGdFQeLGI6ZSnFwJzARQwa8qVjpF9mLPmw,323
5
5
  datahub/entrypoints.py,sha256=9Qf-37rNnTzbGlx8S75OCDazIclFp6zWNcCEL1zCZto,9015
6
6
  datahub/errors.py,sha256=p5rFAdAGVCk4Lqolol1YvthceadUSwpaCxLXRcyCCFQ,676
7
7
  datahub/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -48,20 +48,20 @@ datahub/api/entities/dataprocess/dataprocess_instance.py,sha256=IhY-rcXs-r8EatwW
48
48
  datahub/api/entities/dataproduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  datahub/api/entities/dataproduct/dataproduct.py,sha256=148TmItxDDyGNzfZdL8aDreSEtyAw79IN8N8oSmNOPE,21461
50
50
  datahub/api/entities/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- datahub/api/entities/dataset/dataset.py,sha256=r2wHe6MdXKtmvjrpxVBesuurYfvMLCvZKUhlvBk9Zws,50038
51
+ datahub/api/entities/dataset/dataset.py,sha256=j4nQ-1DCMhm5c8Ugf6m-IP-YWkpvaQXnZGfqBA_RQ0I,50128
52
52
  datahub/api/entities/external/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  datahub/api/entities/external/external_entities.py,sha256=7HRt3Oz2sw_7BDxEVc6W7jK4UqHXLZuo_rGPJ5NdAoE,7727
54
54
  datahub/api/entities/external/external_tag.py,sha256=Z-wSfu64GMBzDF0AGrkUvabDxU7Xf0NLOsGtAGorvUM,4540
55
55
  datahub/api/entities/external/lake_formation_external_entites.py,sha256=QdB7IUQdHqKo9Bnvvobfl8OlXwp1qpWuT1AVJ-ydSWM,5808
56
- datahub/api/entities/external/restricted_text.py,sha256=whTh0hab7ed_4bioif8K-3OZNl_09cW98jdz7wpDB6s,5536
56
+ datahub/api/entities/external/restricted_text.py,sha256=HLCc9n4u0G1WJcD8XslzNf15OMvl3YF_UUUho4gYccQ,5532
57
57
  datahub/api/entities/external/unity_catalog_external_entites.py,sha256=XiiI_D589OATxyn93ve2BtdFpEq83jMaCBTP3cLtMZI,6090
58
58
  datahub/api/entities/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- datahub/api/entities/forms/forms.py,sha256=B1KnoMmaXwznWdbjltoLq3sH9qj-BpzyC7z7FcwwOM4,15812
59
+ datahub/api/entities/forms/forms.py,sha256=Df7C4S7nGPpZU7arB0xBy7-9wvL9FQ0a5apzfWfQVZU,15895
60
60
  datahub/api/entities/forms/forms_graphql_constants.py,sha256=DKpnKlMKTjmnyrCTvp63V4LX4THGTAMq3ep8THrSGP4,537
61
61
  datahub/api/entities/platformresource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  datahub/api/entities/platformresource/platform_resource.py,sha256=pVAjv6NoH746Mfvdak7ji0eqlEcEeV-Ji7M5gyNXmds,10603
63
63
  datahub/api/entities/structuredproperties/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- datahub/api/entities/structuredproperties/structuredproperties.py,sha256=CUAMxgQXhlTJThkidyfGiMIeVto4aveThaG2DfDIhZI,8547
64
+ datahub/api/entities/structuredproperties/structuredproperties.py,sha256=o9HghVb3QVDx9ygwSVXOxECnZa2Z5ql2cVMq1G2wI9g,8584
65
65
  datahub/api/graphql/__init__.py,sha256=5yl0dJxO-2d_QuykdJrDIbWq4ja9bo0t2dAEh89JOog,142
66
66
  datahub/api/graphql/assertion.py,sha256=o_q6SV7N1rJTVMNKSUBGJnZPk6TcVYoVShgDmPw65dE,2817
67
67
  datahub/api/graphql/base.py,sha256=zk724_oYSJ0nK7X7Z80MijnA6ry9JqpxnBsJeYuONKA,1737
@@ -84,7 +84,7 @@ datahub/cli/lite_cli.py,sha256=XKMejSuYUToKBvgN3YmmnxjRcaG5WPw23gJuQK8pgRc,13099
84
84
  datahub/cli/migrate.py,sha256=XWW_fd4EUQGAUrKh9oKmtNYmfhcvbqWZJj3TQNgD8Dk,18012
85
85
  datahub/cli/migration_utils.py,sha256=snkkT8ixo3Il4bvc7qN_QBOP1fz5UsO0usrUl2zJ68w,9478
86
86
  datahub/cli/put_cli.py,sha256=ehqsxEPVVK-0xu7nVfBl_GxfsDbkgjIjkF8mfGfcIpc,3827
87
- datahub/cli/quickstart_versioning.py,sha256=Ec7SehEImRQW4I_8O89cTG1MvZtnnd8EJx9X8NaauoY,7302
87
+ datahub/cli/quickstart_versioning.py,sha256=9tSIwDSHBX2xCOlzFisgmZ1QIN_Bu6EVVOMInMb6SQw,7309
88
88
  datahub/cli/state_cli.py,sha256=RDXYCb17sqjW49nNdkoGAqNPRRHOKw5lcgcs5QvHeOM,1142
89
89
  datahub/cli/telemetry.py,sha256=xw3SiAn2je48Qv4kXPYN5EPVKHWEWZc2LGoF7UzGs8U,489
90
90
  datahub/cli/timeline_cli.py,sha256=Wc_Mo7khFFHXgRSl2FgtvB8m0QhuCEhkpaFCIOPpHJE,7584
@@ -157,7 +157,7 @@ datahub/ingestion/api/transform.py,sha256=X0GpjMJzYkLuZx8MTWxH50cWGm9rGsnn3k188m
157
157
  datahub/ingestion/api/workunit.py,sha256=e8n8RfSjHZZm2R4ShNH0UuMtUkMjyqqM2j2t7oL74lo,6327
158
158
  datahub/ingestion/api/auto_work_units/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
159
  datahub/ingestion/api/auto_work_units/auto_dataset_properties_aspect.py,sha256=ID_6N3nWl2qohsSGizUCqo3d2MNyDeVbyWroQpSOSsc,5059
160
- datahub/ingestion/api/auto_work_units/auto_ensure_aspect_size.py,sha256=fMjPnyWEofIZV52E2AFYU3IgBJwyZvbygXxCJyEtcWI,4442
160
+ datahub/ingestion/api/auto_work_units/auto_ensure_aspect_size.py,sha256=0BwkpLhORbsiTHq0g_N_1cVVoZYdLR3qz02mNmsV9-M,4444
161
161
  datahub/ingestion/autogenerated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
162
  datahub/ingestion/autogenerated/capability_summary.json,sha256=CfD0RKd0bOMmNiv8bIF0x78FXaSMVFIIit62T8TR4og,109072
163
163
  datahub/ingestion/autogenerated/lineage.json,sha256=wjaXxrzpo3M9ppc80TKIgCTuCg0jpb-D9MhBsHXaMOY,10004
@@ -230,8 +230,8 @@ datahub/ingestion/source/source_registry.py,sha256=a2mLjJPLkSI-gYCTb_7U7Jo4D8jGk
230
230
  datahub/ingestion/source/sql_queries.py,sha256=9ICUC6tpXpxvtwfK-9lytJzFcLe8MrNlciwy9DIFM-4,13764
231
231
  datahub/ingestion/source/superset.py,sha256=oi7F2jlvkVr9ItJ_r1Jm4bYfXHYu4vPAFPMPaGJKB84,50608
232
232
  datahub/ingestion/source/abs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
- datahub/ingestion/source/abs/config.py,sha256=mBQe0JTaP-Rcv4HnMUUySoYbSr4r3jDEMioxaXHnxXU,6709
234
- datahub/ingestion/source/abs/datalake_profiler_config.py,sha256=Rkf64evufyVGPiE4VK8QAjzBiJFu85tOGMmJ0lJZ2Og,3600
233
+ datahub/ingestion/source/abs/config.py,sha256=WW9JWbzqAJDblAcJKtNeuBHqOeJsB57lW2PqSD65-BU,6729
234
+ datahub/ingestion/source/abs/datalake_profiler_config.py,sha256=FfrcgK-JEF94vw-l3q6pN6FENXb-wZzW2w1VUZVkwW8,3620
235
235
  datahub/ingestion/source/abs/profiling.py,sha256=yKNCKpr6w7qpCH-baeSkNE9VjkN6eBot_weD-2_Jxzk,17579
236
236
  datahub/ingestion/source/abs/report.py,sha256=CkRjsNn0Pab-ZPllxz3IUJI_r3x0T6urJePa_hJKi5U,586
237
237
  datahub/ingestion/source/abs/source.py,sha256=z86K5_P_gu8kTytLOAYyQqqD2g14JGSrv1B3g0dUDFs,24070
@@ -243,7 +243,7 @@ datahub/ingestion/source/aws/glue.py,sha256=p5jRzGjzG5BgiZA1b6ayPxn7slpDbHG5iKiB
243
243
  datahub/ingestion/source/aws/s3_boto_utils.py,sha256=Y54jlLV5gLcuZ4Zs57kIW5dYHD89RSFfsVNlFbRnSkQ,3901
244
244
  datahub/ingestion/source/aws/s3_util.py,sha256=OFypcgmVC6jnZM90-gjcPpAMtTV1lbnreCaMhCzNlzs,2149
245
245
  datahub/ingestion/source/aws/sagemaker.py,sha256=Bl2tkBYnrindgx61VHYgNovUF_Kp_fXNcivQn28vC2w,5254
246
- datahub/ingestion/source/aws/tag_entities.py,sha256=1pCjc-3YC8kQJ5bf4x4iQaamz9jm5V83p2PjKtwi9lo,11283
246
+ datahub/ingestion/source/aws/tag_entities.py,sha256=q7DFxSFZ0IZWZrA8iKbgIHtB4OHNa5oQvm0HughU28A,11297
247
247
  datahub/ingestion/source/aws/sagemaker_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
248
  datahub/ingestion/source/aws/sagemaker_processors/common.py,sha256=x4ijMxKjZ-oJdqGyTwBp2J50uxYT1ejlVlGs8-vDXMU,2234
249
249
  datahub/ingestion/source/aws/sagemaker_processors/feature_groups.py,sha256=IUwPTSITL-RaO3i3lX_KaDwOGPNMXHf66PPWAcMglWI,10383
@@ -290,7 +290,7 @@ datahub/ingestion/source/data_lake_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-
290
290
  datahub/ingestion/source/data_lake_common/config.py,sha256=qUk83B01hjuBKHvVz8SmXnVCy5eFj-2-2QLEOrAdbgk,359
291
291
  datahub/ingestion/source/data_lake_common/data_lake_utils.py,sha256=IYr5y8vy_6CtMtITqzn6OqovzH1cpe1i30M-75PouXo,7768
292
292
  datahub/ingestion/source/data_lake_common/object_store.py,sha256=i9Hgb8Ww23QD_jEjzj_2qxA8Nr56krnZfo1qyOWmH9M,23608
293
- datahub/ingestion/source/data_lake_common/path_spec.py,sha256=ekJAr4-PE2RhzQnmKb2xcSs_YncC1Dz95-UrXI67Vos,23584
293
+ datahub/ingestion/source/data_lake_common/path_spec.py,sha256=kSmefMWKO2ObTS7OJKR81synnjaEJjV5L85Y1jf-f3A,23586
294
294
  datahub/ingestion/source/datahub/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
295
295
  datahub/ingestion/source/datahub/config.py,sha256=bjR1U3F85FbtgqmLDW-f_4dQvuw5AsJQxdQlOUeHDUk,5126
296
296
  datahub/ingestion/source/datahub/datahub_api_reader.py,sha256=hlKADVEPoTFiRGKqRsMF5mL4fSu_IrIW8Nx7LpEzvkM,2134
@@ -353,12 +353,12 @@ datahub/ingestion/source/grafana/types.py,sha256=Bz0-FIPBXHaBjfFHYGJhE20c2vYZwAs
353
353
  datahub/ingestion/source/hex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
354
  datahub/ingestion/source/hex/api.py,sha256=1cjLuR6dAJor0C281VMzG8hc_noo0MsPu4FgBVvU1vI,12816
355
355
  datahub/ingestion/source/hex/constants.py,sha256=8hUTMWyG5keTNfXoLu_Dh413Hw_mGGJX1atiiDZyKtg,271
356
- datahub/ingestion/source/hex/hex.py,sha256=tUYNcvwKVoQuRWv4KhcDnMeOpICh4JwhD8oF988Tjg4,13199
356
+ datahub/ingestion/source/hex/hex.py,sha256=GHSz3uZsAZ3XgqmTAwzwzMiHcpDcOZmvNb4F3eerGV8,13200
357
357
  datahub/ingestion/source/hex/mapper.py,sha256=N3mTlEcrOmhv9ia1dnHGFgFJD2ddyTtU3H5IUbb-UxU,13344
358
358
  datahub/ingestion/source/hex/model.py,sha256=S9bUhfFcjzuio2dBS6HzSyRVPiSJvRvMQ0qyVrjV5-E,1766
359
359
  datahub/ingestion/source/hex/query_fetcher.py,sha256=r9UvF_qwswkRlNY7AI8p46eqAYSxVtjVE2e7eO4XagA,13384
360
360
  datahub/ingestion/source/iceberg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
361
- datahub/ingestion/source/iceberg/iceberg.py,sha256=BNDGooK9cmqpOjzkV1u4rpsduVPNWg_97Uca6aLurNU,35431
361
+ datahub/ingestion/source/iceberg/iceberg.py,sha256=UWfI4sN5uO6f9KzxjY939a_BIkAnPf0ELCmFvf9KuYg,35427
362
362
  datahub/ingestion/source/iceberg/iceberg_common.py,sha256=CD_yHQ_wEgivyLQUTRO9BZJB29S7j5fUVllki-BPwUU,12292
363
363
  datahub/ingestion/source/iceberg/iceberg_profiler.py,sha256=9iwp2vpQTi4OMbIKoDZV5lAdvjMR0ls6Llpck9grJIE,9875
364
364
  datahub/ingestion/source/identity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -427,7 +427,7 @@ datahub/ingestion/source/powerbi/rest_api_wrapper/query.py,sha256=VNw1Uvli6g0pnu
427
427
  datahub/ingestion/source/powerbi_report_server/__init__.py,sha256=N9fGcrHXBbuPmx9rpGjd_jkMC3smXmfiwISDP1QZapk,324
428
428
  datahub/ingestion/source/powerbi_report_server/constants.py,sha256=i_hXcvPHjwk3VpTT5ef7s8dN9F6pJzPyRUiG5UzCCYI,3544
429
429
  datahub/ingestion/source/powerbi_report_server/report_server.py,sha256=4WYIJj7CHjPO68118KldscoqvuhI7YuFMXyqica93xw,19978
430
- datahub/ingestion/source/powerbi_report_server/report_server_domain.py,sha256=J43_u4O_HjomB_cKvqOpR1gNPeRYp-WkWBRuOf9sTxI,11769
430
+ datahub/ingestion/source/powerbi_report_server/report_server_domain.py,sha256=qhmwk4Bw2xORIFSwBlH7KUkNerkgPyihgEjtLWb3iBw,11731
431
431
  datahub/ingestion/source/profiling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
432
432
  datahub/ingestion/source/profiling/common.py,sha256=4sZ58AeBV64KRfKAgjkg-UyNjAc3YERahQMmW4algAw,1426
433
433
  datahub/ingestion/source/qlik_sense/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -438,7 +438,7 @@ datahub/ingestion/source/qlik_sense/qlik_sense.py,sha256=xehXgOnG9ah0GE5b8wm9OJY
438
438
  datahub/ingestion/source/qlik_sense/websocket_connection.py,sha256=jp39OInvjCN9BtnKsHU_aa1B3X9hVHqSmD25stXuqHk,1940
439
439
  datahub/ingestion/source/redshift/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
440
440
  datahub/ingestion/source/redshift/config.py,sha256=l_hlgsCjvlcgcFQpd5WMKlW8nqQUhaMGec8FnUbSl6Y,8997
441
- datahub/ingestion/source/redshift/datashares.py,sha256=kH3YkoenOa59XZU12XeUf283lOOAITYD9jOXpy8R06E,9227
441
+ datahub/ingestion/source/redshift/datashares.py,sha256=7G4YoEigZTl-K1aWDw3Jl8s3-3EnX4L46mCKu1LqxYI,9234
442
442
  datahub/ingestion/source/redshift/exception.py,sha256=dxzYUIv5B_FAWhOuzG2u5We7FX-ar4jhOXPXAlEIvgM,2055
443
443
  datahub/ingestion/source/redshift/lineage.py,sha256=IPF8vHy2MFyhK-hu2-lxV2-kcnNAEzltPLnnIvwIBMY,44100
444
444
  datahub/ingestion/source/redshift/lineage_v2.py,sha256=dbTvuaJBV5yvCWM_oEAqZIA1JOlGxLJOexbEB47A_xE,17962
@@ -474,7 +474,7 @@ datahub/ingestion/source/sigma/data_classes.py,sha256=YZkkzwftV34mq5c_4jlC2PCSiR
474
474
  datahub/ingestion/source/sigma/sigma.py,sha256=7dbkwk8_wp94XH9mhmtI_8ihR35cqYywtU-dc_oK4Cc,25386
475
475
  datahub/ingestion/source/sigma/sigma_api.py,sha256=7PK5AQa838hYeaQ5L0dioi4n4bLrpN-r7COKTTNUYw8,19837
476
476
  datahub/ingestion/source/slack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
477
- datahub/ingestion/source/slack/slack.py,sha256=pc-5zmXXwyxx0Q8hfyKbXPW2ZYieaM-NwbH8Fk_E9ng,25986
477
+ datahub/ingestion/source/slack/slack.py,sha256=JWanUfzFGynV_PWcH0YzJIbRcmL880DA6dEI9QW-QiQ,25800
478
478
  datahub/ingestion/source/snowflake/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
479
479
  datahub/ingestion/source/snowflake/constants.py,sha256=XCW3vw4JfLn_s8-oXBX6WFNMPOkX5qAQLFX2KqagojQ,2678
480
480
  datahub/ingestion/source/snowflake/oauth_config.py,sha256=ol9D3RmruGStJAeL8PYSQguSqcD2HfkjPkMF2AB_eZs,1277
@@ -483,7 +483,7 @@ datahub/ingestion/source/snowflake/snowflake_assertion.py,sha256=_l3k4aI9wvioE81
483
483
  datahub/ingestion/source/snowflake/snowflake_config.py,sha256=6uR7eZDmEfLpfs_QYNJGTTZI6N2VOvjqXKmG_7c6-9Q,22291
484
484
  datahub/ingestion/source/snowflake/snowflake_connection.py,sha256=3-nP3HHCblUnUHYo_fvFp5VOAteCtR4GNjaUEvyNTNQ,18175
485
485
  datahub/ingestion/source/snowflake/snowflake_data_reader.py,sha256=ffR5E2uhD71FUMXd3XOg2rHwrp1rbbGEFTAbqKcmI2s,2195
486
- datahub/ingestion/source/snowflake/snowflake_lineage_v2.py,sha256=eWUlWMc5X2X_Y1I2peworFWLLsXQjryEHxPDuSqrowg,21683
486
+ datahub/ingestion/source/snowflake/snowflake_lineage_v2.py,sha256=a2vDWZNthV3AqD3Y_Rd4lHSZbaiyuEc--WXWcJqcV0k,21711
487
487
  datahub/ingestion/source/snowflake/snowflake_profiler.py,sha256=PmQi-qDlRhdJ-PsJ7x-EScIiswWRAxDDOKHydvN3mTY,7404
488
488
  datahub/ingestion/source/snowflake/snowflake_queries.py,sha256=deJwFf9Bg3bphMi6WNfPon59hFSLYJZ4ByQA4pUkTkU,42926
489
489
  datahub/ingestion/source/snowflake/snowflake_query.py,sha256=kqOxibplHyDhdioue8MeXBzeDS9d274-dspb-wyWMMI,38165
@@ -554,20 +554,20 @@ datahub/ingestion/source/tableau/tableau_server_wrapper.py,sha256=nSyx9RzC6TCQDm
554
554
  datahub/ingestion/source/tableau/tableau_validation.py,sha256=Hjbfc1AMIkGgzo5ffWXtNRjrxSxzHvw7-dYZDt4d3WE,1819
555
555
  datahub/ingestion/source/unity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
556
556
  datahub/ingestion/source/unity/analyze_profiler.py,sha256=2pqkFY30CfN4aHgFZZntjeG0hNhBytZJvXC13VfTc1I,4689
557
- datahub/ingestion/source/unity/config.py,sha256=7QosoBthg9kirHfXev_vhefkobUxYnp1DTc8Z62wSEo,14972
557
+ datahub/ingestion/source/unity/config.py,sha256=qOhM0ZggovgrQpm4umthx6Gf4t0uqyr_VUyafqL4Rww,16554
558
558
  datahub/ingestion/source/unity/connection_test.py,sha256=B143Wb28fS0V4GhygU9hzKqiArWBjsQO54IUCPf23dc,2586
559
559
  datahub/ingestion/source/unity/ge_profiler.py,sha256=NBRHZceq-f95iUn7u0h7cgcd9nAc48Aa-lmp_BqE0As,8409
560
560
  datahub/ingestion/source/unity/hive_metastore_proxy.py,sha256=IAWWJjaW0si_UF52Se2D7wmdYRY_afUG4QlVmQu6xaw,15351
561
- datahub/ingestion/source/unity/proxy.py,sha256=iZ2ftKOXkxpFr0_2bEYEm31ci9OZJWFYgna3DNLCXrQ,26706
561
+ datahub/ingestion/source/unity/proxy.py,sha256=A2ysUIFv7kvo9ddzdPW1cAFmWfJr2UpGiwCufDNvrzw,38677
562
562
  datahub/ingestion/source/unity/proxy_profiling.py,sha256=WLqvYP6MziaisA4LYL4T_GA-kPt6Xdde7bfaYsjYw40,9663
563
- datahub/ingestion/source/unity/proxy_types.py,sha256=qrvHiwPzl5cPX-KRvcIGGeJVdr0I8XUQmoAI6ErZ-v8,9371
563
+ datahub/ingestion/source/unity/proxy_types.py,sha256=7VDGpkI1a9zlx-pb0SvvKCAKD-PBhyBJMeyHKfwLHOg,9710
564
564
  datahub/ingestion/source/unity/report.py,sha256=XFT9oQfvEB4RkTvWGgFOoQuLPUN_AIoPXZ79xeDhGHQ,2831
565
- datahub/ingestion/source/unity/source.py,sha256=udK1_WI7RO2Uzx9xis0mx264nHXDiMeP4Kah3-CFXis,49832
566
- datahub/ingestion/source/unity/tag_entities.py,sha256=QUYPso5WMF7oWTpvFqoA8cAbAnmHrkhKiGr2kDjf5zo,11568
565
+ datahub/ingestion/source/unity/source.py,sha256=R8YpkoHcEwoS5XW-hkasmLydFtAOQ5GCnt2RIXjl-h4,51829
566
+ datahub/ingestion/source/unity/tag_entities.py,sha256=6dhbB33o0RcWa7WHm1h4QB5Hc7kXFauvs4tnADv2P_M,11582
567
567
  datahub/ingestion/source/unity/usage.py,sha256=0wETBAaZvHI_EGgBlxX3bKsVHEAdnUV8_bKI_lbyWjY,11500
568
568
  datahub/ingestion/source/usage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
569
569
  datahub/ingestion/source/usage/clickhouse_usage.py,sha256=M6YVQqwJoFqJPxlTr62lFwxfDeX2-_9Diw6qtcq2XWM,10244
570
- datahub/ingestion/source/usage/starburst_trino_usage.py,sha256=EnxKQ6IMt0o3VLvqfFJAE-mYMnLponnKGZEsVeGet1c,10802
570
+ datahub/ingestion/source/usage/starburst_trino_usage.py,sha256=E5wlRQ-jkwSqFaHWgwnWRPu5IiWwxOnPXX1bCv_v__E,10815
571
571
  datahub/ingestion/source/usage/usage_common.py,sha256=uuCgIduhlRL2zIAN8rymZ5cZn1WF6akZ-ZbbaVYo9_w,9813
572
572
  datahub/ingestion/source/vertexai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
573
573
  datahub/ingestion/source/vertexai/vertexai.py,sha256=RuHda0mbc1DElYZIZ_W_hvkN7Eg4LIvI1fRFMvpHPB0,56012
@@ -1101,8 +1101,8 @@ datahub_provider/operators/datahub_assertion_operator.py,sha256=uvTQ-jk2F0sbqqxp
1101
1101
  datahub_provider/operators/datahub_assertion_sensor.py,sha256=lCBj_3x1cf5GMNpHdfkpHuyHfVxsm6ff5x2Z5iizcAo,140
1102
1102
  datahub_provider/operators/datahub_operation_operator.py,sha256=aevDp2FzX7FxGlXrR0khoHNbxbhKR2qPEX5e8O2Jyzw,174
1103
1103
  datahub_provider/operators/datahub_operation_sensor.py,sha256=8fcdVBCEPgqy1etTXgLoiHoJrRt_nzFZQMdSzHqSG7M,168
1104
- acryl_datahub-1.2.0.4rc1.dist-info/METADATA,sha256=Q4nQsXgwdBhJYjZBIPHFvD-YgHeHgbm5IP2lLo_sNnM,182014
1105
- acryl_datahub-1.2.0.4rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1106
- acryl_datahub-1.2.0.4rc1.dist-info/entry_points.txt,sha256=bnGf6eX9UhiW8yVHtt6MJCVcmLErvrVQxTJAayA-PKc,9885
1107
- acryl_datahub-1.2.0.4rc1.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1108
- acryl_datahub-1.2.0.4rc1.dist-info/RECORD,,
1104
+ acryl_datahub-1.2.0.4rc2.dist-info/METADATA,sha256=af37eraOzMb0VmpftIUv0IYDhDY2rfmlTOXq15ovp84,182014
1105
+ acryl_datahub-1.2.0.4rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1106
+ acryl_datahub-1.2.0.4rc2.dist-info/entry_points.txt,sha256=bnGf6eX9UhiW8yVHtt6MJCVcmLErvrVQxTJAayA-PKc,9885
1107
+ acryl_datahub-1.2.0.4rc2.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1108
+ acryl_datahub-1.2.0.4rc2.dist-info/RECORD,,
datahub/_version.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # Published at https://pypi.org/project/acryl-datahub/.
2
2
  __package_name__ = "acryl-datahub"
3
- __version__ = "1.2.0.4rc1"
3
+ __version__ = "1.2.0.4rc2"
4
4
 
5
5
 
6
6
  def is_dev_mode() -> bool:
@@ -136,7 +136,7 @@ class StructuredPropertiesHelper:
136
136
 
137
137
  class SchemaFieldSpecification(StrictModel):
138
138
  id: Optional[str] = None
139
- urn: Optional[str] = None
139
+ urn: Optional[str] = Field(None, validate_default=True)
140
140
  structured_properties: Optional[StructuredProperties] = None
141
141
  type: Optional[str] = None
142
142
  nativeDataType: Optional[str] = None
@@ -382,9 +382,9 @@ class Dataset(StrictModel):
382
382
  id: Optional[str] = None
383
383
  platform: Optional[str] = None
384
384
  env: str = "PROD"
385
- urn: Optional[str] = None
385
+ urn: Optional[str] = Field(None, validate_default=True)
386
386
  description: Optional[str] = None
387
- name: Optional[str] = None
387
+ name: Optional[str] = Field(None, validate_default=True)
388
388
  schema_metadata: Optional[SchemaSpecification] = Field(default=None, alias="schema")
389
389
  downstreams: Optional[List[str]] = None
390
390
  properties: Optional[Dict[str, str]] = None
@@ -45,9 +45,9 @@ class RestrictedText(ConfigModel):
45
45
  custom_field="hello-world.test"
46
46
  )
47
47
 
48
- # model.name returns truncated and sanitized version
49
- # model.name.raw_text returns original value
50
- # model.custom_field returns "hello_worl..."
48
+ print(model.name) # Truncated and sanitized version
49
+ print(model.name.text) # Original value
50
+ print(model.custom_field) # "hello_worl..."
51
51
  ```
52
52
  """
53
53
 
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import List, Optional, Union
6
6
 
7
7
  import yaml
8
- from pydantic import validator
8
+ from pydantic import Field, validator
9
9
  from ruamel.yaml import YAML
10
10
  from typing_extensions import Literal
11
11
 
@@ -67,7 +67,7 @@ class Prompt(ConfigModel):
67
67
  description: Optional[str] = None
68
68
  type: str
69
69
  structured_property_id: Optional[str] = None
70
- structured_property_urn: Optional[str] = None
70
+ structured_property_urn: Optional[str] = Field(default=None, validate_default=True)
71
71
  required: Optional[bool] = None
72
72
 
73
73
  @validator("structured_property_urn", pre=True, always=True)
@@ -111,7 +111,7 @@ class Actors(ConfigModel):
111
111
 
112
112
  class Forms(ConfigModel):
113
113
  id: Optional[str] = None
114
- urn: Optional[str] = None
114
+ urn: Optional[str] = Field(default=None, validate_default=True)
115
115
  name: str
116
116
  description: Optional[str] = None
117
117
  prompts: List[Prompt] = []
@@ -4,7 +4,7 @@ from pathlib import Path
4
4
  from typing import Iterable, List, Optional, Union
5
5
 
6
6
  import yaml
7
- from pydantic import StrictStr, validator
7
+ from pydantic import Field, StrictStr, validator
8
8
  from ruamel.yaml import YAML
9
9
 
10
10
  from datahub.configuration.common import ConfigModel
@@ -68,7 +68,7 @@ class TypeQualifierAllowedTypes(ConfigModel):
68
68
 
69
69
  class StructuredProperties(ConfigModel):
70
70
  id: Optional[str] = None
71
- urn: Optional[str] = None
71
+ urn: Optional[str] = Field(None, validate_default=True)
72
72
  qualified_name: Optional[str] = None
73
73
  type: str
74
74
  value_entity_types: Optional[List[str]] = None
@@ -44,7 +44,7 @@ def get_minimum_supported_version_message(version: str) -> str:
44
44
  class QuickstartExecutionPlan(BaseModel):
45
45
  composefile_git_ref: str
46
46
  docker_tag: str
47
- mysql_tag: Optional[str]
47
+ mysql_tag: Optional[str] = None
48
48
 
49
49
 
50
50
  def _is_it_a_version(version: str) -> bool:
@@ -90,7 +90,7 @@ class EnsureAspectSizeProcessor:
90
90
  on GMS side and failure of the entire ingestion. This processor will attempt to trim suspected aspects.
91
91
  """
92
92
  for wu in stream:
93
- logger.debug(f"Ensuring size of workunit: {wu.id}")
93
+ # logger.debug(f"Ensuring size of workunit: {wu.id}")
94
94
 
95
95
  if schema := wu.get_aspect_of_type(SchemaMetadataClass):
96
96
  self.ensure_schema_metadata_size(wu.get_urn(), schema)
@@ -151,7 +151,7 @@ class DataLakeSourceConfig(
151
151
  raise ValueError("platform must not be empty")
152
152
  return platform
153
153
 
154
- @pydantic.root_validator()
154
+ @pydantic.root_validator(skip_on_failure=True)
155
155
  def ensure_profiling_pattern_is_passed_to_profiling(
156
156
  cls, values: Dict[str, Any]
157
157
  ) -> Dict[str, Any]:
@@ -72,7 +72,7 @@ class DataLakeProfilerConfig(ConfigModel):
72
72
  description="Whether to profile for the sample values for all columns.",
73
73
  )
74
74
 
75
- @pydantic.root_validator()
75
+ @pydantic.root_validator(skip_on_failure=True)
76
76
  def ensure_field_level_settings_are_normalized(
77
77
  cls: "DataLakeProfilerConfig", values: Dict[str, Any]
78
78
  ) -> Dict[str, Any]:
@@ -37,7 +37,7 @@ class LakeFormationTagPlatformResourceId(BaseModel, ExternalEntityId):
37
37
 
38
38
  tag_key: str
39
39
  tag_value: Optional[str] = None
40
- platform_instance: Optional[str]
40
+ platform_instance: Optional[str] = None
41
41
  catalog: Optional[str] = None
42
42
  exists_in_lake_formation: bool = False
43
43
  persisted: bool = False
@@ -227,7 +227,7 @@ class LakeFormationTagPlatformResource(BaseModel, ExternalEntity):
227
227
  datahub_urns: LinkedResourceSet
228
228
  managed_by_datahub: bool
229
229
  id: LakeFormationTagPlatformResourceId
230
- allowed_values: Optional[List[str]]
230
+ allowed_values: Optional[List[str]] = None
231
231
 
232
232
  def get_id(self) -> ExternalEntityId:
233
233
  return self.id
@@ -62,7 +62,6 @@ class SortKey(ConfigModel):
62
62
 
63
63
  date_format: Optional[str] = Field(
64
64
  default=None,
65
- type=str,
66
65
  description="The date format to use when sorting. This is used to parse the date from the key. The format should follow the java [SimpleDateFormat](https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html) format.",
67
66
  )
68
67
 
@@ -260,7 +259,7 @@ class PathSpec(ConfigModel):
260
259
  ) -> Union[None, parse.Result, parse.Match]:
261
260
  return self.compiled_folder_include.parse(path)
262
261
 
263
- @pydantic.root_validator()
262
+ @pydantic.root_validator(skip_on_failure=True)
264
263
  def validate_no_double_stars(cls, values: Dict) -> Dict:
265
264
  if "include" not in values:
266
265
  return values
@@ -69,7 +69,7 @@ class HexSourceConfig(
69
69
  )
70
70
  include_components: bool = Field(
71
71
  default=True,
72
- desciption="Include Hex Components in the ingestion",
72
+ description="Include Hex Components in the ingestion",
73
73
  )
74
74
  page_size: int = Field(
75
75
  default=HEX_API_PAGE_SIZE_DEFAULT,
@@ -524,11 +524,11 @@ class IcebergSource(StatefulIngestionSourceBase):
524
524
  custom_properties["format-version"] = str(table.metadata.format_version)
525
525
  custom_properties["partition-spec"] = str(self._get_partition_aspect(table))
526
526
  last_modified: Optional[int] = table.metadata.last_updated_ms
527
- if table.current_snapshot():
528
- custom_properties["snapshot-id"] = str(table.current_snapshot().snapshot_id)
529
- custom_properties["manifest-list"] = table.current_snapshot().manifest_list
527
+ if current_snapshot := table.current_snapshot():
528
+ custom_properties["snapshot-id"] = str(current_snapshot.snapshot_id)
529
+ custom_properties["manifest-list"] = current_snapshot.manifest_list
530
530
  if not last_modified:
531
- last_modified = int(table.current_snapshot().timestamp_ms)
531
+ last_modified = int(current_snapshot.timestamp_ms)
532
532
  if "created-at" in custom_properties:
533
533
  try:
534
534
  dt = dateutil_parser.isoparse(custom_properties["created-at"])
@@ -27,10 +27,8 @@ class CatalogItem(BaseModel):
27
27
  is_favorite: bool = Field(alias="IsFavorite")
28
28
  user_info: Any = Field(None, alias="UserInfo")
29
29
  display_name: Optional[str] = Field(None, alias="DisplayName")
30
- has_data_sources: bool = Field(default=False, alias="HasDataSources")
31
- data_sources: Optional[List["DataSource"]] = Field(
32
- default_factory=list, alias="DataSources"
33
- )
30
+ has_data_sources: bool = Field(False, alias="HasDataSources")
31
+ data_sources: Optional[List["DataSource"]] = Field(None, alias="DataSources")
34
32
 
35
33
  @validator("display_name", always=True)
36
34
  def validate_diplay_name(cls, value, values):
@@ -26,7 +26,7 @@ from datahub.utilities.search_utils import LogicalOperator
26
26
 
27
27
  class OutboundSharePlatformResource(BaseModel):
28
28
  namespace: str
29
- platform_instance: Optional[str]
29
+ platform_instance: Optional[str] = None
30
30
  env: str
31
31
  source_database: str
32
32
  share_name: str
@@ -203,38 +203,31 @@ class SlackSourceConfig(
203
203
  description="Bot token for the Slack workspace. Needs `users:read`, `users:read.email`, `users.profile:read`, and `team:read` scopes.",
204
204
  )
205
205
  enrich_user_metadata: bool = Field(
206
- type=bool,
207
- default=True,
206
+ True,
208
207
  description="When enabled, will enrich provisioned DataHub users' metadata with information from Slack.",
209
208
  )
210
209
  ingest_users: bool = Field(
211
- type=bool,
212
- default=True,
210
+ True,
213
211
  description="Whether to ingest users. When set to true, will ingest all users in the Slack workspace (as platform resources) to simplify user enrichment after they are provisioned on DataHub.",
214
212
  )
215
213
  api_requests_per_min: int = Field(
216
- type=int,
217
- default=10,
214
+ 10,
218
215
  description="Number of API requests per minute. Low-level config. Do not tweak unless you are facing any issues.",
219
216
  )
220
217
  ingest_public_channels: bool = Field(
221
- type=bool,
222
- default=False,
218
+ False,
223
219
  description="Whether to ingest public channels. If set to true needs `channels:read` scope.",
224
220
  )
225
221
  channels_iteration_limit: int = Field(
226
- type=int,
227
- default=200,
222
+ 200,
228
223
  description="Limit the number of channels to be ingested in a iteration. Low-level config. Do not tweak unless you are facing any issues.",
229
224
  )
230
225
  channel_min_members: int = Field(
231
- type=int,
232
- default=2,
226
+ 2,
233
227
  description="Ingest channels with at least this many members.",
234
228
  )
235
229
  should_ingest_archived_channels: bool = Field(
236
- type=bool,
237
- default=False,
230
+ False,
238
231
  description="Whether to ingest archived channels.",
239
232
  )
240
233
 
@@ -72,7 +72,7 @@ class ColumnUpstreamJob(BaseModel):
72
72
 
73
73
 
74
74
  class ColumnUpstreamLineage(BaseModel):
75
- column_name: Optional[str]
75
+ column_name: Optional[str] = None
76
76
  upstreams: List[ColumnUpstreamJob] = Field(default_factory=list)
77
77
 
78
78
 
@@ -91,9 +91,9 @@ class Query(BaseModel):
91
91
  class UpstreamLineageEdge(BaseModel):
92
92
  DOWNSTREAM_TABLE_NAME: str
93
93
  DOWNSTREAM_TABLE_DOMAIN: str
94
- UPSTREAM_TABLES: Optional[List[UpstreamTableNode]]
95
- UPSTREAM_COLUMNS: Optional[List[ColumnUpstreamLineage]]
96
- QUERIES: Optional[List[Query]]
94
+ UPSTREAM_TABLES: Optional[List[UpstreamTableNode]] = None
95
+ UPSTREAM_COLUMNS: Optional[List[ColumnUpstreamLineage]] = None
96
+ QUERIES: Optional[List[Query]] = None
97
97
 
98
98
  _json_upstream_tables = pydantic_parse_json("UPSTREAM_TABLES")
99
99
  _json_upstream_columns = pydantic_parse_json("UPSTREAM_COLUMNS")
@@ -8,7 +8,7 @@ import pydantic
8
8
  from pydantic import Field
9
9
  from typing_extensions import Literal
10
10
 
11
- from datahub.configuration.common import AllowDenyPattern, ConfigModel
11
+ from datahub.configuration.common import AllowDenyPattern, ConfigEnum, ConfigModel
12
12
  from datahub.configuration.source_common import (
13
13
  DatasetSourceConfigMixin,
14
14
  LowerCaseDatasetUrnConfigMixin,
@@ -36,6 +36,12 @@ from datahub.utilities.global_warning_util import add_global_warning
36
36
  logger = logging.getLogger(__name__)
37
37
 
38
38
 
39
+ class LineageDataSource(ConfigEnum):
40
+ AUTO = "AUTO"
41
+ SYSTEM_TABLES = "SYSTEM_TABLES"
42
+ API = "API"
43
+
44
+
39
45
  class UnityCatalogProfilerConfig(ConfigModel):
40
46
  method: str = Field(
41
47
  description=(
@@ -243,6 +249,21 @@ class UnityCatalogSourceConfig(
243
249
  description="Option to enable/disable lineage generation. Currently we have to call a rest call per column to get column level lineage due to the Databrick api which can slow down ingestion. ",
244
250
  )
245
251
 
252
+ lineage_data_source: LineageDataSource = pydantic.Field(
253
+ default=LineageDataSource.AUTO,
254
+ description=(
255
+ "Source for lineage data extraction. Options: "
256
+ f"'{LineageDataSource.AUTO.value}' - Use system tables when SQL warehouse is available, fallback to API; "
257
+ f"'{LineageDataSource.SYSTEM_TABLES.value}' - Force use of system.access.table_lineage and system.access.column_lineage tables (requires SQL warehouse); "
258
+ f"'{LineageDataSource.API.value}' - Force use of REST API endpoints for lineage data"
259
+ ),
260
+ )
261
+
262
+ ignore_start_time_lineage: bool = pydantic.Field(
263
+ default=False,
264
+ description="Option to ignore the start_time and retrieve all available lineage. When enabled, the start_time filter will be set to zero to extract all lineage events regardless of the configured time window.",
265
+ )
266
+
246
267
  column_lineage_column_limit: int = pydantic.Field(
247
268
  default=300,
248
269
  description="Limit the number of columns to get column level lineage. ",
@@ -362,6 +383,20 @@ class UnityCatalogSourceConfig(
362
383
 
363
384
  return values
364
385
 
386
+ @pydantic.root_validator(skip_on_failure=True)
387
+ def validate_lineage_data_source_with_warehouse(
388
+ cls, values: Dict[str, Any]
389
+ ) -> Dict[str, Any]:
390
+ lineage_data_source = values.get("lineage_data_source", LineageDataSource.AUTO)
391
+ warehouse_id = values.get("warehouse_id")
392
+
393
+ if lineage_data_source == LineageDataSource.SYSTEM_TABLES and not warehouse_id:
394
+ raise ValueError(
395
+ f"lineage_data_source='{LineageDataSource.SYSTEM_TABLES.value}' requires warehouse_id to be set"
396
+ )
397
+
398
+ return values
399
+
365
400
  @pydantic.validator("schema_pattern", always=True)
366
401
  def schema_pattern_should__always_deny_information_schema(
367
402
  cls, v: AllowDenyPattern