acryl-datahub 1.2.0.4rc2__py3-none-any.whl → 1.2.0.4rc4__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 (25) hide show
  1. {acryl_datahub-1.2.0.4rc2.dist-info → acryl_datahub-1.2.0.4rc4.dist-info}/METADATA +2265 -2264
  2. {acryl_datahub-1.2.0.4rc2.dist-info → acryl_datahub-1.2.0.4rc4.dist-info}/RECORD +25 -24
  3. datahub/_version.py +1 -1
  4. datahub/cli/specific/assertions_cli.py +37 -2
  5. datahub/cli/specific/datacontract_cli.py +54 -4
  6. datahub/ingestion/api/report.py +21 -2
  7. datahub/ingestion/source/data_lake_common/path_spec.py +5 -1
  8. datahub/ingestion/source/dbt/dbt_cloud.py +6 -3
  9. datahub/ingestion/source/fivetran/fivetran_log_api.py +4 -3
  10. datahub/ingestion/source/grafana/models.py +6 -0
  11. datahub/ingestion/source/tableau/tableau.py +1 -1
  12. datahub/ingestion/transformer/base_transformer.py +8 -5
  13. datahub/metadata/_internal_schema_classes.py +513 -513
  14. datahub/metadata/_urns/urn_defs.py +1684 -1684
  15. datahub/metadata/schema.avsc +16745 -16348
  16. datahub/metadata/schemas/DatasetUsageStatistics.avsc +8 -0
  17. datahub/sdk/search_client.py +3 -0
  18. datahub/specific/aspect_helpers/fine_grained_lineage.py +76 -0
  19. datahub/specific/datajob.py +15 -1
  20. datahub/specific/dataset.py +37 -59
  21. datahub/utilities/server_config_util.py +2 -1
  22. {acryl_datahub-1.2.0.4rc2.dist-info → acryl_datahub-1.2.0.4rc4.dist-info}/WHEEL +0 -0
  23. {acryl_datahub-1.2.0.4rc2.dist-info → acryl_datahub-1.2.0.4rc4.dist-info}/entry_points.txt +0 -0
  24. {acryl_datahub-1.2.0.4rc2.dist-info → acryl_datahub-1.2.0.4rc4.dist-info}/licenses/LICENSE +0 -0
  25. {acryl_datahub-1.2.0.4rc2.dist-info → acryl_datahub-1.2.0.4rc4.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
- acryl_datahub-1.2.0.4rc2.dist-info/licenses/LICENSE,sha256=9xNHpsD0uYF5ONzXsKDCuHHB-xbiCrSbueWXqrTNsxk,11365
1
+ acryl_datahub-1.2.0.4rc4.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=hBgZ5qlWoxGdFQeLGI6ZSnFwJzARQwa8qVjpF9mLPmw,323
4
+ datahub/_version.py,sha256=QaLopy9Ah6-37qM0KRkhlm-r1BRJTfxbvgArP3vAugU,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
@@ -89,8 +89,8 @@ 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
91
91
  datahub/cli/specific/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- datahub/cli/specific/assertions_cli.py,sha256=S_uvdfF-X_51vGyVTfZZD8xIEynbiVajdi6Bb1pJNCQ,5324
93
- datahub/cli/specific/datacontract_cli.py,sha256=5RnU_27HVTMM8Ti-v8OXFdQIO6ooeiMj-tArcZnJD0M,2517
92
+ datahub/cli/specific/assertions_cli.py,sha256=4YvlafrxBIUMmDSnWW9g7qwpuPRu4V4yqTDx0_jAthU,6555
93
+ datahub/cli/specific/datacontract_cli.py,sha256=7Ropg-EOn_n4dcttFDokpC07bbm0IzhR_e1z1AjSLAU,4062
94
94
  datahub/cli/specific/dataproduct_cli.py,sha256=6jGdWisx7vxItYPOlKcjziSlyJF_268T5iytKjuhPlA,14951
95
95
  datahub/cli/specific/dataset_cli.py,sha256=MaIr3PrE1NP6Q_O4CXHm-eyuPah6ypFEgLWP0r-tgBw,8463
96
96
  datahub/cli/specific/file_loader.py,sha256=YMyv_evdKyHSft5Tm_kOcqJ4ALpRmMm54ZJAyl7Nxqs,773
@@ -148,7 +148,7 @@ datahub/ingestion/api/incremental_properties_helper.py,sha256=KzdxdrQtaMV2XMHfPs
148
148
  datahub/ingestion/api/ingestion_job_checkpointing_provider_base.py,sha256=3lLdkkxVqE9MVc26cdXImPeWy16az5BwgcorWxeBV50,1759
149
149
  datahub/ingestion/api/pipeline_run_listener.py,sha256=5uBP__LbMQxJ2utlf07cIzQINqPbUOKiZyOJta6a0og,713
150
150
  datahub/ingestion/api/registry.py,sha256=LbdZr89465Lj7ptQRVB4vI1JR1igWABvQFj9-WX63bI,7454
151
- datahub/ingestion/api/report.py,sha256=_bP7JPHZyftWnCJwFs6YId21mQ0-2rd406H91lLHW98,16942
151
+ datahub/ingestion/api/report.py,sha256=jdAfqkAn1tlwBJBmC_t0-6KzKhKBxO8N3y_NziyBXSU,17889
152
152
  datahub/ingestion/api/report_helpers.py,sha256=WbUC1kQeaKqIagGV3XzfPmPs7slAT1mfNY4og2BH2A8,994
153
153
  datahub/ingestion/api/sink.py,sha256=GZt48PV56FAhNoma-V5EwwRZvezhb40YH_zprm8_Yo0,4961
154
154
  datahub/ingestion/api/source.py,sha256=uf0fNbiOy0bS_aKFOcNv6NvuZe0LSDIDdNza9hraP7s,21857
@@ -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=kSmefMWKO2ObTS7OJKR81synnjaEJjV5L85Y1jf-f3A,23586
293
+ datahub/ingestion/source/data_lake_common/path_spec.py,sha256=mIwyuysba7mD_qupG1-ARlXrAcqAQU5Zjd_vHXIEdPY,23783
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
@@ -300,7 +300,7 @@ datahub/ingestion/source/datahub/datahub_source.py,sha256=mpBrHxf3sitdPZni5B5atl
300
300
  datahub/ingestion/source/datahub/report.py,sha256=VHBfCbwFRzdLdB7hQG9ST4EiZxl_vBCU0XxGcZR6Xxs,940
301
301
  datahub/ingestion/source/datahub/state.py,sha256=PZoT7sSK1wadVf5vN6phrgr7I6LL7ePP-EJjP1OO0bQ,3507
302
302
  datahub/ingestion/source/dbt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
- datahub/ingestion/source/dbt/dbt_cloud.py,sha256=4gWOFSX0YU8EAJgO4J47NBE4QbNtJ-5nUe66vry-oGc,18160
303
+ datahub/ingestion/source/dbt/dbt_cloud.py,sha256=ILkP6ui48VU8pClDQz6jaFR026gcF7lyUX4gt9im8Vg,18428
304
304
  datahub/ingestion/source/dbt/dbt_common.py,sha256=3NcCYsJSDfC5j7ajC_Mr3MnA_sF9DTq1ka6ft3b0u6A,85997
305
305
  datahub/ingestion/source/dbt/dbt_core.py,sha256=WVI2ZYXOMxgFzJnJqsqmEGS-5xdfiVIDsCb78lvSeQ0,24930
306
306
  datahub/ingestion/source/dbt/dbt_tests.py,sha256=pOZJaP4VsbaE5j4qVlE_E3ifno_KQpidfGTvOi5fr6I,9839
@@ -328,7 +328,7 @@ datahub/ingestion/source/fivetran/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
328
328
  datahub/ingestion/source/fivetran/config.py,sha256=00jc9srBZUQ18RSSCnHiOoJ4_F6I_rp--z-V7d9wXNY,9031
329
329
  datahub/ingestion/source/fivetran/data_classes.py,sha256=ecdUJH5BEze0yv-uFpKWPNaNmV1gORDA2XMFk0zhcBw,595
330
330
  datahub/ingestion/source/fivetran/fivetran.py,sha256=s8wcECtmuugUoZ0Zdthq0SIPpTLvziZXuhhUX9bJ5N4,14492
331
- datahub/ingestion/source/fivetran/fivetran_log_api.py,sha256=5bmG705tCOaKAIjnomJfGCyCwKc7NahtW-rMP-4YifU,12902
331
+ datahub/ingestion/source/fivetran/fivetran_log_api.py,sha256=PNzuykiiFTU8FhBIfUbW6udURZpz_35aq7rfffbpIfA,13010
332
332
  datahub/ingestion/source/fivetran/fivetran_query.py,sha256=c1begMnLtWoLBmaKBiarpMZ6HTVAI6hDPKn26DYuMYI,5343
333
333
  datahub/ingestion/source/gc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
334
  datahub/ingestion/source/gc/datahub_gc.py,sha256=EXO-Stj6gGMLTSTbSBC-C3_zpjpQtFN9pAMWR95ma0I,12830
@@ -347,7 +347,7 @@ datahub/ingestion/source/grafana/grafana_api.py,sha256=pSbaHGPQ4HajCyVnvfEjl9zr2
347
347
  datahub/ingestion/source/grafana/grafana_config.py,sha256=l1vLcd_mbWOC6G9Mr329bW2Tm__SG9SZjkJdoz7UzEE,3674
348
348
  datahub/ingestion/source/grafana/grafana_source.py,sha256=tUYW0bXvnwhfBpSRQh4KobhOThXhezdH4hy2IPBkgag,21727
349
349
  datahub/ingestion/source/grafana/lineage.py,sha256=qDWCiceOotVApOpcGhRK9OTqyRJIPqXcJi6CKnfK8z0,7178
350
- datahub/ingestion/source/grafana/models.py,sha256=CSIJbLP1_80h9PqGxh57zEYYydEGEQqmQDlfg22ZeM0,4240
350
+ datahub/ingestion/source/grafana/models.py,sha256=FpP7AtZv5_Ob3bbhHhujgvrVsgvpfye3TlAeTe0Jeak,4467
351
351
  datahub/ingestion/source/grafana/report.py,sha256=LTRxjXYCYHwOaj1zrenCDAvFBE5U5tAv6Wh5LlfsgfE,2963
352
352
  datahub/ingestion/source/grafana/types.py,sha256=Bz0-FIPBXHaBjfFHYGJhE20c2vYZwAsXr70MVGjSu6s,443
353
353
  datahub/ingestion/source/hex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -547,7 +547,7 @@ datahub/ingestion/source/state_provider/datahub_ingestion_checkpointing_provider
547
547
  datahub/ingestion/source/state_provider/file_ingestion_checkpointing_provider.py,sha256=DziD57PbHn2Tcy51tYXCG-GQgyTGMUxnkuzVS_xihFY,4079
548
548
  datahub/ingestion/source/state_provider/state_provider_registry.py,sha256=SVq4mIyGNmLXE9OZx1taOiNPqDoQp03-Ot9rYnB5F3k,401
549
549
  datahub/ingestion/source/tableau/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
550
- datahub/ingestion/source/tableau/tableau.py,sha256=SO89gIsLUIxkHpTANUVdqkbsgpyO5mIcO1m3kZylgaM,155893
550
+ datahub/ingestion/source/tableau/tableau.py,sha256=aadKU4hFzsD2zhaFysTReUyg6FOAGE_HtZjuoLsIy28,155885
551
551
  datahub/ingestion/source/tableau/tableau_common.py,sha256=4cUm3E8wLfjLSjcAXXWDWVUXAEho_hbsQa2BzAF-vtM,27012
552
552
  datahub/ingestion/source/tableau/tableau_constant.py,sha256=4ngrOwqxf4cgbLR3i0OKI4pUxmHMABKyywfhXQ0GazA,2592
553
553
  datahub/ingestion/source/tableau/tableau_server_wrapper.py,sha256=nSyx9RzC6TCQDm-cTVJ657qT8iDwzk_8JMKpohhmOc4,1046
@@ -591,7 +591,7 @@ datahub/ingestion/transformer/add_dataset_schema_terms.py,sha256=ftoZ4DJE0lJTKnz
591
591
  datahub/ingestion/transformer/add_dataset_tags.py,sha256=eyvQpb0hntSmaP9HSHcIiHLvLFtkEeX-BKmHVtuaF3Y,4737
592
592
  datahub/ingestion/transformer/add_dataset_terms.py,sha256=F3DgVFJfm_Ofh4NOt7caKbVx4FQE-tOns17E0qDn43o,5799
593
593
  datahub/ingestion/transformer/auto_helper_transformer.py,sha256=MuxoHr0_SPi8LpHbYYOYaEO8d-7XBu2zRn-PDnqrIHU,2843
594
- datahub/ingestion/transformer/base_transformer.py,sha256=j5HmnplhY1K_7oa9DNHhCegs6eMKndc-VFoT8GGxgpU,12383
594
+ datahub/ingestion/transformer/base_transformer.py,sha256=TQDkD-KNtGxb0xuAFfrF7X8FhYRTm53uMNhMzc5FZiM,12558
595
595
  datahub/ingestion/transformer/dataset_domain.py,sha256=WWvATUs9Z59_m5F6ZUA5fktJ6OBWzrJuJ2VAjdmHrCI,9032
596
596
  datahub/ingestion/transformer/dataset_domain_based_on_tags.py,sha256=HN3QapXNg2CTj54F4mY3f-XkAIB-rMu0mG7ThOCE5fI,3092
597
597
  datahub/ingestion/transformer/dataset_transformer.py,sha256=dOK0oO6R6dbuxk5i5Za6hkzy8xCEpQxG8iKjXeIZKM4,5305
@@ -626,12 +626,12 @@ datahub/lite/lite_registry.py,sha256=bpH0kasP-LtwwUFNA2QsOIehfekAYfJtN-AkQLmSWnw
626
626
  datahub/lite/lite_server.py,sha256=p9Oa2nNs65mqcssSIVOr7VOzWqfVstz6ZQEdT4f82S0,1949
627
627
  datahub/lite/lite_util.py,sha256=G0LQHKkyEb1pc_q183g6hflShclGx7kikgMaOxtVVcs,4545
628
628
  datahub/metadata/__init__.py,sha256=AjhXPjI6cnpdcrBRrE5gOWo15vv2TTl2ctU4UAnUN7A,238
629
- datahub/metadata/_internal_schema_classes.py,sha256=Zh2volhvkUCENRavXDwPsmwfRe62k8_O6f5QT8_bh-g,1051205
630
- datahub/metadata/schema.avsc,sha256=u5iUlz9AnFfJijjJ9xcZx3MoiBfxWSmhr7pZIOg0tMo,738363
629
+ datahub/metadata/_internal_schema_classes.py,sha256=fziGi3e9XS6oX1Zybgltkp5fVLGEgRluZGblASjn7rU,1051205
630
+ datahub/metadata/schema.avsc,sha256=OBrzAfnlzwBkg3zgALyHpWETEC-H-OmE8E0VedKjoZ4,740578
631
631
  datahub/metadata/schema_classes.py,sha256=tPT8iHCak4IsZi_oL0nirbPpI8ETTPTZzapqLRpeKU4,1326
632
632
  datahub/metadata/urns.py,sha256=nfrCTExR-k2P9w272WVtWSN3xW1VUJngPwP3xnvULjU,1217
633
633
  datahub/metadata/_urns/__init__.py,sha256=cOF3GHMDgPhmbLKbN02NPpuLGHSu0qNgQyBRv08eqF0,243
634
- datahub/metadata/_urns/urn_defs.py,sha256=C13iwxKcPZ6wXW_XOP62wj6fNTzgqH30DymjWNLeM6w,143154
634
+ datahub/metadata/_urns/urn_defs.py,sha256=S-xwY4JrGqT-wMusm2qe3X70oHiuV5yGTEzwACeyqAU,143154
635
635
  datahub/metadata/com/__init__.py,sha256=gsAIuTxzfJdI7a9ybZlgMIHMAYksM1SxGxXjtySgKSc,202
636
636
  datahub/metadata/com/linkedin/__init__.py,sha256=gsAIuTxzfJdI7a9ybZlgMIHMAYksM1SxGxXjtySgKSc,202
637
637
  datahub/metadata/com/linkedin/events/__init__.py,sha256=s_dR0plZF-rOxxIbE8ojekJqwiHzl2WYR-Z3kW6kKS0,298
@@ -808,7 +808,7 @@ datahub/metadata/schemas/DatasetKey.avsc,sha256=51gyLo-nOcAGchs9pGAfv2vCpWR2y0hN
808
808
  datahub/metadata/schemas/DatasetProfile.avsc,sha256=3ZCU9JD6l2razACp0AY6LLMgnkMTj6D_5Xk9np6WWRM,9965
809
809
  datahub/metadata/schemas/DatasetProperties.avsc,sha256=DFJn75feqaoQk84zin_o_lqsFFhqkwya5LGC5LLJXbU,4209
810
810
  datahub/metadata/schemas/DatasetUpstreamLineage.avsc,sha256=PjAWPbsqwH7FjX2kFDy0dE6ENYOwRynH9vJerWisr2A,5365
811
- datahub/metadata/schemas/DatasetUsageStatistics.avsc,sha256=JKNy_KlUqr3kt7o1Cu2DiQx3XUG_NQbVFVpeNr4ntCc,6999
811
+ datahub/metadata/schemas/DatasetUsageStatistics.avsc,sha256=jgF1u31kP1XAnnV2B0X8cpCczWZiPEDKHxhwW2ZzHjc,7228
812
812
  datahub/metadata/schemas/Deprecation.avsc,sha256=p8SBIuKP3XVGeaBI7rROpLNACuoX8eMLRlZz8lGOYV8,1354
813
813
  datahub/metadata/schemas/DisplayProperties.avsc,sha256=MTa_g2s0roxNFFggWU8rslUH3UFe3xe11uUXyh0Go_I,1732
814
814
  datahub/metadata/schemas/Documentation.avsc,sha256=9vIJG9B08FFrC3y5c1XVaT5U3c-b5sOAc5foUxMnyCs,4836
@@ -961,7 +961,7 @@ datahub/sdk/main_client.py,sha256=jxe_59hu68F95aw4c9DsaAA108D5NuJtyu2CatAMAZU,56
961
961
  datahub/sdk/mlmodel.py,sha256=cO5R8BYVljmQ0w33RIOuZmj4nq8OJCDVAZGTQI6YFS8,12628
962
962
  datahub/sdk/mlmodelgroup.py,sha256=wlZZHny0UORpF0fRYuVkWLSQwIHX_fWl5lPb1NKR6dM,8194
963
963
  datahub/sdk/resolver_client.py,sha256=nKMAZJt2tRSGfKSzoREIh43PXqjM3umLiYkYHJjo1io,3243
964
- datahub/sdk/search_client.py,sha256=hlk40VnD3eT88hMgwXAUv31-ENbDe50P-gsXUnGSNeo,3512
964
+ datahub/sdk/search_client.py,sha256=f2L_aOy-pPB9Mk7WdLSJ6Htp3OT4cEgDIrqnCweNtM8,3592
965
965
  datahub/sdk/search_filters.py,sha256=g0Hj2kxq797eB3oouIiQmSAQ5Z0gPqUN6l0UbTggWiI,17785
966
966
  datahub/secret/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
967
967
  datahub/secret/datahub_secret_store.py,sha256=xyNAZY62d6KSz_kYF9wN7RDMLvNhu2ayOzcYvubOX1E,2519
@@ -971,13 +971,14 @@ datahub/secret/secret_store.py,sha256=2VP_Vd336Cy7C-2kwp4rx8MAqtYgtwv8XyzzNTXE5x
971
971
  datahub/specific/__init__.py,sha256=r5RYM5mDnskLzin3vc87HV-9GSz3P6uQw8AlsN14LaI,88
972
972
  datahub/specific/chart.py,sha256=EUIRzcYNTs6tXoxVwYjJfD74Jw80kAjXyySjjEoTfw4,6685
973
973
  datahub/specific/dashboard.py,sha256=3AsXZ1Cp03uaTHsOmJqEiXzJjZUBgDbX-zmgwMw908o,11514
974
- datahub/specific/datajob.py,sha256=yZXic3CuCGxg-ewnaHphoH9Jjpe-P09XbN7T-rrvkyE,13711
974
+ datahub/specific/datajob.py,sha256=ZXB39I8AiUg0ll0inFDvTv53LxDbgwgsNquXQ2lDhtw,14371
975
975
  datahub/specific/dataproduct.py,sha256=xJbVEACTbwQq7FJO1DAtjCERu3KLU9satU5nwZ5O390,3015
976
- datahub/specific/dataset.py,sha256=E4XTS4T1c5mjdDn0sTAZsXJ4eK-REV3wwhSxTQkjWJs,10067
976
+ datahub/specific/dataset.py,sha256=x_7BPoVN59t48sVUYFh3kVeZq8-k8H_aZcEwc2M43Yo,9313
977
977
  datahub/specific/form.py,sha256=hbxmmBWHma0d4NCZEGR6Nr6R-5A5gYgl1mmkGgnM97o,3834
978
978
  datahub/specific/structured_property.py,sha256=NZ2yppDgtqrH04Wn3_m5IupyLeWoBCMygyr3nEi1A3o,4038
979
979
  datahub/specific/aspect_helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
980
980
  datahub/specific/aspect_helpers/custom_properties.py,sha256=a7w4Ml3mEFX31TwZLEpPE_-wrjQ0tGmw9bbq1DBjTf8,2247
981
+ datahub/specific/aspect_helpers/fine_grained_lineage.py,sha256=gXpP26gvNaoOqJCxunaO4ZHicmqC1h-hGFq5G87bGTI,2731
981
982
  datahub/specific/aspect_helpers/ownership.py,sha256=rNYiJSqb_FJQhFRSIQScg4mfxgYhPvjeaYyvutY6CN0,1861
982
983
  datahub/specific/aspect_helpers/structured_properties.py,sha256=EVnFS025r-PG5PAC7VENVJO-JvDYif2VeYonsC3Z8m8,2255
983
984
  datahub/specific/aspect_helpers/tags.py,sha256=YHcKfRaIvv12wcmfMc8-Dk6gf6xIvJedkn451uBuz-Y,1254
@@ -1046,7 +1047,7 @@ datahub/utilities/sample_data.py,sha256=DMwN3yAqJPrF_rZF6CU0_iLSNBFfsAQ-no0KQhgw
1046
1047
  datahub/utilities/search_utils.py,sha256=BdZfixXrB6lcD_ec6pCotGtVKQ4ekTtmaZDFGyeZfBg,9683
1047
1048
  datahub/utilities/sentinels.py,sha256=p299J2YR62K2Mbuy-2lrGH4BnF9dkRqGo59Wub0hYV4,417
1048
1049
  datahub/utilities/serialized_lru_cache.py,sha256=R9enyN5BlatknX4KFq9euYc2yiE1rRMucPbAHg09Goc,3247
1049
- datahub/utilities/server_config_util.py,sha256=2xQzSwMSqEV7tL2c6T41cMmMfBYFFVJswTrBO9xa6UY,9878
1050
+ datahub/utilities/server_config_util.py,sha256=_mkscT9I1F3JwLR8EylBjKu1p_aRKqMkUWQb8IRpr_s,9945
1050
1051
  datahub/utilities/sql_formatter.py,sha256=tYXIsKjKmpKh0JXGxeAPrHkUWYd1SwJNLjUZsfQP2h0,1016
1051
1052
  datahub/utilities/sqlalchemy_query_combiner.py,sha256=ZWGPG5mrKuumSSEQMrUSjUjSKTaDXw71KWI7Ytnv2xE,15027
1052
1053
  datahub/utilities/sqlalchemy_type_converter.py,sha256=H4S4xnnyPozDBHFhBh4rjjoXa5novFzYIUBJy2KSrVc,9805
@@ -1101,8 +1102,8 @@ datahub_provider/operators/datahub_assertion_operator.py,sha256=uvTQ-jk2F0sbqqxp
1101
1102
  datahub_provider/operators/datahub_assertion_sensor.py,sha256=lCBj_3x1cf5GMNpHdfkpHuyHfVxsm6ff5x2Z5iizcAo,140
1102
1103
  datahub_provider/operators/datahub_operation_operator.py,sha256=aevDp2FzX7FxGlXrR0khoHNbxbhKR2qPEX5e8O2Jyzw,174
1103
1104
  datahub_provider/operators/datahub_operation_sensor.py,sha256=8fcdVBCEPgqy1etTXgLoiHoJrRt_nzFZQMdSzHqSG7M,168
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,,
1105
+ acryl_datahub-1.2.0.4rc4.dist-info/METADATA,sha256=8kdPkPvnS6pQ9t36mC4p2p6QgwGcuVRSkFwowm6Y0zk,182056
1106
+ acryl_datahub-1.2.0.4rc4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1107
+ acryl_datahub-1.2.0.4rc4.dist-info/entry_points.txt,sha256=bnGf6eX9UhiW8yVHtt6MJCVcmLErvrVQxTJAayA-PKc,9885
1108
+ acryl_datahub-1.2.0.4rc4.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1109
+ acryl_datahub-1.2.0.4rc4.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.4rc2"
3
+ __version__ = "1.2.0.4rc4"
4
4
 
5
5
 
6
6
  def is_dev_mode() -> bool:
@@ -1,3 +1,8 @@
1
+ """
2
+ DEPRECATED: This assertions CLI is no longer supported and will be removed in a future version.
3
+ Please use alternative methods for managing assertions in DataHub.
4
+ """
5
+
1
6
  import logging
2
7
  import os
3
8
  from pathlib import Path
@@ -26,7 +31,18 @@ REPORT_FILE_NAME = "compile_report.json"
26
31
 
27
32
  @click.group(cls=DefaultGroup, default="upsert")
28
33
  def assertions() -> None:
29
- """A group of commands to interact with the Assertion entity in DataHub."""
34
+ """A group of commands to interact with the Assertion entity in DataHub.
35
+
36
+ ⚠️ DEPRECATED: This assertions CLI is no longer supported and will be removed
37
+ in a future version. Please use alternative methods for managing assertions in DataHub.
38
+ """
39
+ click.secho(
40
+ "⚠️ WARNING: The assertions CLI is deprecated and no longer supported. "
41
+ "It may be removed in a future version. Please use alternative methods for managing assertions in DataHub.",
42
+ fg="yellow",
43
+ bold=True,
44
+ err=True,
45
+ )
30
46
  pass
31
47
 
32
48
 
@@ -34,7 +50,16 @@ def assertions() -> None:
34
50
  @click.option("-f", "--file", required=True, type=click.Path(exists=True))
35
51
  @upgrade.check_upgrade
36
52
  def upsert(file: str) -> None:
37
- """Upsert (create or update) a set of assertions in DataHub."""
53
+ """Upsert (create or update) a set of assertions in DataHub.
54
+
55
+ ⚠️ DEPRECATED: This command is deprecated and no longer supported.
56
+ """
57
+ click.secho(
58
+ "⚠️ WARNING: The 'upsert' command is deprecated and no longer supported.",
59
+ fg="yellow",
60
+ bold=True,
61
+ err=True,
62
+ )
38
63
 
39
64
  assertions_spec: AssertionsConfigSpec = AssertionsConfigSpec.from_yaml(file)
40
65
 
@@ -78,7 +103,15 @@ def compile(
78
103
  In future, we may introduce separate command to automatically apply these compiled changes
79
104
  in assertion platform. Currently, generated result artifacts are stored in target folder
80
105
  unless another folder is specified using option `--output-to <folder>`.
106
+
107
+ ⚠️ DEPRECATED: This command is deprecated and no longer supported.
81
108
  """
109
+ click.secho(
110
+ "⚠️ WARNING: The 'compile' command is deprecated and no longer supported.",
111
+ fg="yellow",
112
+ bold=True,
113
+ err=True,
114
+ )
82
115
 
83
116
  if platform not in ASSERTION_PLATFORMS:
84
117
  click.secho(
@@ -146,3 +179,5 @@ def extras_list_to_dict(extras: List[str]) -> Dict[str, str]:
146
179
  # Later:
147
180
  # 3. execute compiled assertions on assertion platform (Later, requires connection details to platform),
148
181
  # 4. cleanup assertions from assertion platform (generate artifacts. optionally execute)
182
+ #
183
+ # NOTE: This entire assertions CLI is deprecated and these TODOs will not be implemented.
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import warnings
2
3
  from typing import Optional
3
4
 
4
5
  import click
@@ -14,15 +15,52 @@ logger = logging.getLogger(__name__)
14
15
 
15
16
  @click.group(cls=DefaultGroup, default="upsert")
16
17
  def datacontract() -> None:
17
- """A group of commands to interact with the DataContract entity in DataHub."""
18
- pass
18
+ """
19
+ A group of commands to interact with the DataContract entity in DataHub.
20
+
21
+ WARNING: This CLI is DEPRECATED and no longer supported.
22
+ Please migrate to alternative data contract solutions.
23
+ """
24
+ # Issue deprecation warning
25
+ warnings.warn(
26
+ "The datacontract CLI is deprecated and no longer supported. "
27
+ "Please migrate to alternative data contract solutions.",
28
+ DeprecationWarning,
29
+ stacklevel=2,
30
+ )
31
+
32
+ # Log deprecation message for runtime visibility
33
+ logger.warning(
34
+ "DEPRECATED: The datacontract CLI is no longer supported and will be removed in a future version. "
35
+ "Please migrate to alternative data contract solutions."
36
+ )
37
+
38
+ # Display deprecation message to user
39
+ click.secho(
40
+ "⚠️ WARNING: This datacontract CLI is DEPRECATED and no longer supported.",
41
+ fg="yellow",
42
+ bold=True,
43
+ )
44
+ click.secho("Please migrate to alternative data contract solutions.", fg="yellow")
19
45
 
20
46
 
21
47
  @datacontract.command()
22
48
  @click.option("-f", "--file", required=True, type=click.Path(exists=True))
23
49
  @upgrade.check_upgrade
24
50
  def upsert(file: str) -> None:
25
- """Upsert (create or update) a Data Contract in DataHub."""
51
+ """
52
+ Upsert (create or update) a Data Contract in DataHub.
53
+
54
+ WARNING: This command is DEPRECATED and no longer supported.
55
+ """
56
+
57
+ click.secho(
58
+ "⚠️ WARNING: The 'upsert' command is deprecated and no longer supported.",
59
+ fg="yellow",
60
+ bold=True,
61
+ )
62
+
63
+ logger.warning("DEPRECATED: datacontract upsert command is no longer supported")
26
64
 
27
65
  data_contract: DataContract = DataContract.from_yaml(file)
28
66
  urn = data_contract.urn
@@ -59,7 +97,19 @@ def upsert(file: str) -> None:
59
97
  @click.option("--hard/--soft", required=False, is_flag=True, default=False)
60
98
  @upgrade.check_upgrade
61
99
  def delete(urn: Optional[str], file: Optional[str], hard: bool) -> None:
62
- """Delete a Data Contract in DataHub. Defaults to a soft-delete. Use --hard to completely erase metadata."""
100
+ """
101
+ Delete a Data Contract in DataHub. Defaults to a soft-delete. Use --hard to completely erase metadata.
102
+
103
+ WARNING: This command is DEPRECATED and no longer supported.
104
+ """
105
+
106
+ click.secho(
107
+ "⚠️ WARNING: The 'delete' command is deprecated and no longer supported.",
108
+ fg="yellow",
109
+ bold=True,
110
+ )
111
+
112
+ logger.warning("DEPRECATED: datacontract delete command is no longer supported")
63
113
 
64
114
  if not urn:
65
115
  if not file:
@@ -186,11 +186,19 @@ class ExamplesReport(Report, Closeable):
186
186
  aspects: Dict[str, Dict[str, int]] = field(
187
187
  default_factory=lambda: defaultdict(lambda: defaultdict(int))
188
188
  )
189
+ # This counts existence of aspects for each entity/subtype
190
+ # This is used for the UI to calculate %age of entities with the aspect
189
191
  aspects_by_subtypes: Dict[str, Dict[str, Dict[str, int]]] = field(
190
192
  default_factory=lambda: defaultdict(
191
193
  lambda: defaultdict(lambda: defaultdict(int))
192
194
  )
193
195
  )
196
+ # This counts all aspects for each entity/subtype
197
+ aspects_by_subtypes_full_count: Dict[str, Dict[str, Dict[str, int]]] = field(
198
+ default_factory=lambda: defaultdict(
199
+ lambda: defaultdict(lambda: defaultdict(int))
200
+ )
201
+ )
194
202
  samples: Dict[str, Dict[str, List[str]]] = field(
195
203
  default_factory=lambda: defaultdict(lambda: defaultdict(list))
196
204
  )
@@ -399,6 +407,9 @@ class ExamplesReport(Report, Closeable):
399
407
  entity_subtype_aspect_counts: Dict[str, Dict[str, Dict[str, int]]] = (
400
408
  defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
401
409
  )
410
+ entity_subtype_aspect_counts_exist: Dict[str, Dict[str, Dict[str, int]]] = (
411
+ defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
412
+ )
402
413
  for row in self._file_based_dict.sql_query(query):
403
414
  entity_type = row["entityType"]
404
415
  sub_type = row["subTypes"]
@@ -410,15 +421,23 @@ class ExamplesReport(Report, Closeable):
410
421
  entity_subtype_aspect_counts[entity_type][sub_type][aspect] += (
411
422
  aspect_count * count
412
423
  )
424
+ entity_subtype_aspect_counts_exist[entity_type][sub_type][aspect] += (
425
+ count
426
+ )
413
427
 
414
428
  self.aspects.clear()
415
429
  self.aspects_by_subtypes.clear()
416
- _aspects_seen: Set[str] = set()
430
+ self.aspects_by_subtypes_full_count.clear()
417
431
  for entity_type, subtype_counts in entity_subtype_aspect_counts.items():
418
432
  for sub_type, aspect_counts in subtype_counts.items():
419
433
  for aspect, count in aspect_counts.items():
420
434
  self.aspects[entity_type][aspect] += count
421
- _aspects_seen.add(aspect)
435
+ self.aspects_by_subtypes_full_count[entity_type][sub_type] = dict(
436
+ aspect_counts
437
+ )
438
+
439
+ for entity_type, subtype_counts in entity_subtype_aspect_counts_exist.items():
440
+ for sub_type, aspect_counts in subtype_counts.items():
422
441
  self.aspects_by_subtypes[entity_type][sub_type] = dict(aspect_counts)
423
442
 
424
443
  self.samples.clear()
@@ -455,7 +455,11 @@ class PathSpec(ConfigModel):
455
455
  partition = partition.rsplit("/", 1)[0]
456
456
  for partition_key in partition.split("/"):
457
457
  if partition_key.find("=") != -1:
458
- partition_keys.append(tuple(partition_key.split("=")))
458
+ key_value = partition_key.split(
459
+ "=", 1
460
+ ) # Split into at most 2 parts
461
+ if len(key_value) == 2:
462
+ partition_keys.append((key_value[0], key_value[1]))
459
463
  else:
460
464
  partition_split = partition.rsplit("/", 1)
461
465
  if len(partition_split) == 1:
@@ -370,9 +370,12 @@ class DBTCloudSource(DBTSourceBase, TestableSource):
370
370
  name = node["alias"]
371
371
 
372
372
  comment = node.get("comment", "")
373
- description = node["description"]
374
- if node.get("sourceDescription"):
375
- description = node["sourceDescription"]
373
+
374
+ # In dbt sources, there are two types of descriptions:
375
+ # - description: table-level description (specific to the source table)
376
+ # - sourceDescription: schema-level description (describes the overall source schema)
377
+ # The table-level description should take precedence since it's more specific.
378
+ description = node["description"] or node.get("sourceDescription", "")
376
379
 
377
380
  if node["resourceType"] == "model":
378
381
  materialization = node["materializedType"]
@@ -69,9 +69,10 @@ class FivetranLogAPI:
69
69
  fivetran_log_query.set_schema(bigquery_destination_config.dataset)
70
70
 
71
71
  # The "database" should be the BigQuery project name.
72
- fivetran_log_database = engine.execute(
73
- "SELECT @@project_id"
74
- ).fetchone()[0]
72
+ result = engine.execute("SELECT @@project_id").fetchone()
73
+ if result is None:
74
+ raise ValueError("Failed to retrieve BigQuery project ID")
75
+ fivetran_log_database = result[0]
75
76
  else:
76
77
  raise ConfigurationError(
77
78
  f"Destination platform '{destination_platform}' is not yet supported."
@@ -12,6 +12,7 @@ from typing import Any, Dict, List, Optional
12
12
 
13
13
  from pydantic import BaseModel, Field
14
14
 
15
+ from datahub.configuration.pydantic_migration_helpers import PYDANTIC_VERSION_2
15
16
  from datahub.emitter.mcp_builder import ContainerKey
16
17
 
17
18
  # Grafana-specific type definitions for better type safety
@@ -106,6 +107,11 @@ class Folder(BaseModel):
106
107
  title: str
107
108
  description: Optional[str] = ""
108
109
 
110
+ if PYDANTIC_VERSION_2:
111
+ from pydantic import ConfigDict
112
+
113
+ model_config = ConfigDict(coerce_numbers_to_str=True) # type: ignore
114
+
109
115
 
110
116
  class FolderKey(ContainerKey):
111
117
  """Key for identifying a Grafana folder."""
@@ -1184,7 +1184,7 @@ class TableauSiteSource:
1184
1184
  self.report.warning(
1185
1185
  title="Incomplete project hierarchy",
1186
1186
  message="Project details missing. Child projects will be ingested without reference to their parent project. We generally need Site Administrator Explorer permissions to extract the complete project hierarchy.",
1187
- context=f"Missing {project.parent_id}, referenced by {project.id} {project.project_name}",
1187
+ context=f"Missing {project.parent_id}, referenced by {project.id} {project.name}",
1188
1188
  )
1189
1189
  project.parent_id = None
1190
1190
 
@@ -281,11 +281,14 @@ class BaseTransformer(Transformer, metaclass=ABCMeta):
281
281
  )
282
282
  )
283
283
 
284
- record_metadata = _update_work_unit_id(
285
- envelope=envelope,
286
- aspect_name=mcp.aspect.get_aspect_name(), # type: ignore
287
- urn=mcp.entityUrn,
288
- )
284
+ if mcp.entityUrn:
285
+ record_metadata = _update_work_unit_id(
286
+ envelope=envelope,
287
+ aspect_name=mcp.aspect.get_aspect_name(), # type: ignore
288
+ urn=mcp.entityUrn,
289
+ )
290
+ else:
291
+ record_metadata = envelope.metadata.copy()
289
292
 
290
293
  yield RecordEnvelope(
291
294
  record=mcp,