acryl-datahub 1.0.0.1rc3__py3-none-any.whl → 1.0.0.1rc5__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.

@@ -1,9 +1,9 @@
1
- acryl_datahub-1.0.0.1rc3.dist-info/licenses/LICENSE,sha256=9xNHpsD0uYF5ONzXsKDCuHHB-xbiCrSbueWXqrTNsxk,11365
1
+ acryl_datahub-1.0.0.1rc5.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=ZzXmZcaAOZUvHmN9D5crLfATvvjGO_NN7ItKlRqtLD0,323
4
+ datahub/_version.py,sha256=WcqnUOhppm3OjJxRxReX0PiJpy4Wv0kAAnaBQ0m4FCw,323
5
5
  datahub/entrypoints.py,sha256=2TYgHhs3sCxJlojIHjqfxzt3_ImPwPzq4vBtsUuMqu4,8885
6
- datahub/errors.py,sha256=w6h8b27j9XlmPbTwqpu7-wgiTrXlHzcnUOnJ_iOrwzo,520
6
+ datahub/errors.py,sha256=bwtiNzFdVFze0IVKDEXQutkwk5j7cZkfXCUYCZIDSYg,565
7
7
  datahub/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  datahub/_codegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  datahub/_codegen/aspect.py,sha256=PJRa-Z4ouXHq3OkulfyWhwZn-fFUBDK_UPvmqaWdbWk,1063
@@ -120,13 +120,13 @@ datahub/emitter/composite_emitter.py,sha256=ZU-IdlAXKGPtmyT0JJgYC09vRn-TmeNaA6VP
120
120
  datahub/emitter/enum_helpers.py,sha256=QBOEUu_hDCvyL_v4ayNQV8XwJbf5zKyu0Xat0mI1Kgo,376
121
121
  datahub/emitter/generic_emitter.py,sha256=i37ZFm9VR_tmiZm9kIypEkQEB_cLKbzj_tJvViN-fm8,828
122
122
  datahub/emitter/kafka_emitter.py,sha256=Uix1W1WaXF8VqUTUfzdRZKca2XrR1w50Anx2LVkROlc,5822
123
- datahub/emitter/mce_builder.py,sha256=8UiG2VsYgC7n29h_y4qL6F9faGwwMZF3zGscl_CBT9s,16808
123
+ datahub/emitter/mce_builder.py,sha256=i-iLLdnuy7h1JrzwC2sCtQthbso-cNj1uijOQZKHbeA,16717
124
124
  datahub/emitter/mcp.py,sha256=hAAYziDdkwjazQU0DtWMbQWY8wS09ACrKJbqxoWXdgc,9637
125
125
  datahub/emitter/mcp_builder.py,sha256=Q1bX2BthNvZ7ae71XYF6ICoiN8IOqaAd_h3zOct57Q0,11752
126
126
  datahub/emitter/mcp_patch_builder.py,sha256=u7cpW6DkiN7KpLapmMaXgL_FneoN69boxiANbVgMdSI,4564
127
127
  datahub/emitter/request_helper.py,sha256=HpI9a9W0TzoVbrs584rF8P8w-IT_iKLmvYmO_6IHhXs,1008
128
- datahub/emitter/response_helper.py,sha256=lRMvzF-RPHNkN_ONl-N2uJjKh5XtRFrofrdGibVGn2U,4509
129
- datahub/emitter/rest_emitter.py,sha256=4l3_vnOmS8GKTj_HUejg5gJb28QCK0XH_nPVPE5AAp4,29841
128
+ datahub/emitter/response_helper.py,sha256=h2hrZYiv4xfauD_lHPW_fN_AV8KhWNM4CVd-Lat2vT0,4608
129
+ datahub/emitter/rest_emitter.py,sha256=NhA-4LnLxAHVz1cLiYqFnfX2YZTsCLdOBaFUtqqJpPs,30197
130
130
  datahub/emitter/serialization_helper.py,sha256=q12Avmf70Vy4ttQGMJoTKlE5EsybMKNg2w3MQeZiHvk,3652
131
131
  datahub/emitter/sql_parsing_builder.py,sha256=Cr5imZrm3dYDSCACt5MFscgHCtVbHTD6IjUmsvsKoEs,11991
132
132
  datahub/emitter/synchronized_file_emitter.py,sha256=s4ATuxalI4GDAkrZTaGSegxBdvvNPZ9jRSdtElU0kNs,1805
@@ -175,7 +175,7 @@ datahub/ingestion/graph/client.py,sha256=rdX2DXqTXyLyS1_qiUzc3zzIE8CFheP2pYi1I68
175
175
  datahub/ingestion/graph/config.py,sha256=_oha8Je7P80ZmrkZUAaRHyYbdMmTkMI5JkYjEP2Ri1Q,751
176
176
  datahub/ingestion/graph/connections.py,sha256=9462L0ZWGKURyypAln25eMPhK3pcufBar9tNDoqspXs,741
177
177
  datahub/ingestion/graph/entity_versioning.py,sha256=nrcNz0Qm6kpE6oTu_mrYUQDx14KPspBTc6R9SyFUY6c,6901
178
- datahub/ingestion/graph/filters.py,sha256=TL9JDVhpzKLfKf0m9vvzp3XCg3hecElaYRh0rajYfM8,6922
178
+ datahub/ingestion/graph/filters.py,sha256=VFZKmef7ay1sQ5zRDDC1M_i6T96VzIgs-FzMs5eibiQ,7347
179
179
  datahub/ingestion/reporting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
180
  datahub/ingestion/reporting/datahub_ingestion_run_summary_provider.py,sha256=iEulcZMLBQuUfe9MAYyobMekvMcNm4dqVcS_C_2KfrI,9736
181
181
  datahub/ingestion/reporting/file_reporter.py,sha256=tiWukmMxHrTQI3rOAumsq6lRlw8T6spqpS6XBDYnrZU,1640
@@ -200,7 +200,7 @@ datahub/ingestion/source/demo_data.py,sha256=PbtCHlZx3wrKlOPPgkWhDQuPm7ZfIx2neXJ
200
200
  datahub/ingestion/source/elastic_search.py,sha256=2dwIcSbYMaq_RoSnxLGz4Q_20oJ8AGgMKunVIBIgYM8,23406
201
201
  datahub/ingestion/source/feast.py,sha256=lsk0jc_0gKiiBNgmrmT8o8bvBOSLFPQMNrvWEcOye2w,18802
202
202
  datahub/ingestion/source/file.py,sha256=h6CRH7hrKcFxu1SmZDjqJcJUSrc031u5oJUl2clnPO4,15976
203
- datahub/ingestion/source/ge_data_profiler.py,sha256=uPHHgOr-fHXsdGonVa8Lc8ZE1yo0TyVWKhktwAuA3fI,64642
203
+ datahub/ingestion/source/ge_data_profiler.py,sha256=gQDHVA6-yYtg1dwH6D7RJGcCPDbE61BAkJ5i4-KHD1g,65092
204
204
  datahub/ingestion/source/ge_profiling_config.py,sha256=FlWfXoVoayabVXNMB9qETEU0GX0az6HYqNUZRnIu_fQ,10866
205
205
  datahub/ingestion/source/glue_profiling_config.py,sha256=vpMJH4Lf_qgR32BZy58suabri1yV5geaAPjzg2eORDc,2559
206
206
  datahub/ingestion/source/ldap.py,sha256=CNr3foofIpoCXu_GGqfcajlQE2qkHr5isYwVcDutdkk,18695
@@ -217,7 +217,7 @@ datahub/ingestion/source/redash.py,sha256=YxjSad-X_wPmxYH8dJmFz_VCFhiLTCTSlK99Wd
217
217
  datahub/ingestion/source/salesforce.py,sha256=CQtDFv1OsbC1vyzNbKOc6GxhFQ5GdYj45hgAF0-oIcw,40487
218
218
  datahub/ingestion/source/source_registry.py,sha256=a2mLjJPLkSI-gYCTb_7U7Jo4D8jGknNQ_yScPIihXFk,1208
219
219
  datahub/ingestion/source/sql_queries.py,sha256=Ip7UZub7fgMh7P5jL_zJPY7lSkc9GGTy8GJ8lqZrcsE,9502
220
- datahub/ingestion/source/superset.py,sha256=QwgEeHYD2d_o5fg4bYKJLgc1UFXM_xjMcvvwWkLbAb8,35352
220
+ datahub/ingestion/source/superset.py,sha256=FRZ7cCURW6NHUOKaFicdAZq2caXektvO9rJE4tO9scU,40336
221
221
  datahub/ingestion/source/abs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
222
  datahub/ingestion/source/abs/config.py,sha256=mBQe0JTaP-Rcv4HnMUUySoYbSr4r3jDEMioxaXHnxXU,6709
223
223
  datahub/ingestion/source/abs/datalake_profiler_config.py,sha256=Rkf64evufyVGPiE4VK8QAjzBiJFu85tOGMmJ0lJZ2Og,3600
@@ -318,7 +318,7 @@ datahub/ingestion/source/gc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
318
318
  datahub/ingestion/source/gc/datahub_gc.py,sha256=EXO-Stj6gGMLTSTbSBC-C3_zpjpQtFN9pAMWR95ma0I,12830
319
319
  datahub/ingestion/source/gc/dataprocess_cleanup.py,sha256=mUWcMt-_FL1SYGIgI4lGZDZGXspUUTv__5GN1W2oJ3s,17118
320
320
  datahub/ingestion/source/gc/execution_request_cleanup.py,sha256=y-9ZIs_DZPUzYH1CI6HmaAZg3olNNA7MjT8HrCqAI0k,11159
321
- datahub/ingestion/source/gc/soft_deleted_entity_cleanup.py,sha256=_oTXN0fzB4kYyFclah9X_1ds32bLayQyyWgoPeHQMw4,12923
321
+ datahub/ingestion/source/gc/soft_deleted_entity_cleanup.py,sha256=4-qQR_2HGIYU8kC2hRIsJyKKMb9lKq4B6paJm_abUk4,12628
322
322
  datahub/ingestion/source/gcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
323
  datahub/ingestion/source/gcs/gcs_source.py,sha256=5EZkrDqjRNQz_aUL1MLp0PTFm0Ztubmk0NYJGZTRLjU,6276
324
324
  datahub/ingestion/source/gcs/gcs_utils.py,sha256=_78KM863XXgkVLmZLtYGF5PJNnZas1go-XRtOq-79lo,1047
@@ -390,7 +390,7 @@ datahub/ingestion/source/powerbi/m_query/validator.py,sha256=crG-VZy2XPieiDliP9y
390
390
  datahub/ingestion/source/powerbi/rest_api_wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
391
391
  datahub/ingestion/source/powerbi/rest_api_wrapper/data_classes.py,sha256=4Kr7cLXpsWGtg-M18aXyhij9k9Ll5dGv3EaCS3d2DRk,8590
392
392
  datahub/ingestion/source/powerbi/rest_api_wrapper/data_resolver.py,sha256=FHBFSkf5tf8_o5Sjfuvo1pLVTlkSyxI5HpI8ZthPuhE,38569
393
- datahub/ingestion/source/powerbi/rest_api_wrapper/powerbi_api.py,sha256=NrhgwREmkWTvlhpEs7dAEEJfOxQRalA02ArKr2LLjeY,27666
393
+ datahub/ingestion/source/powerbi/rest_api_wrapper/powerbi_api.py,sha256=wFAcldAYpDwW-9ll50LB7ac938-tn4AMnTJSNDoOO6Y,27651
394
394
  datahub/ingestion/source/powerbi/rest_api_wrapper/profiling_utils.py,sha256=bgcPheyqOj6KdRjDyANDK5yggItglcBIjbGFIwAxSds,1392
395
395
  datahub/ingestion/source/powerbi/rest_api_wrapper/query.py,sha256=VNw1Uvli6g0pnu9FpigYmnCdEPbVEipz7vdZU_WmHf4,616
396
396
  datahub/ingestion/source/powerbi_report_server/__init__.py,sha256=N9fGcrHXBbuPmx9rpGjd_jkMC3smXmfiwISDP1QZapk,324
@@ -410,9 +410,9 @@ datahub/ingestion/source/redshift/config.py,sha256=l_hlgsCjvlcgcFQpd5WMKlW8nqQUh
410
410
  datahub/ingestion/source/redshift/datashares.py,sha256=kH3YkoenOa59XZU12XeUf283lOOAITYD9jOXpy8R06E,9227
411
411
  datahub/ingestion/source/redshift/exception.py,sha256=dxzYUIv5B_FAWhOuzG2u5We7FX-ar4jhOXPXAlEIvgM,2055
412
412
  datahub/ingestion/source/redshift/lineage.py,sha256=IPF8vHy2MFyhK-hu2-lxV2-kcnNAEzltPLnnIvwIBMY,44100
413
- datahub/ingestion/source/redshift/lineage_v2.py,sha256=ZMxPmmZ-O-Fid6VqnaUt6FyLSPHY8LXESYLj8fTZy1g,17523
413
+ datahub/ingestion/source/redshift/lineage_v2.py,sha256=dbTvuaJBV5yvCWM_oEAqZIA1JOlGxLJOexbEB47A_xE,17962
414
414
  datahub/ingestion/source/redshift/profile.py,sha256=dq7m9YG3TvEMbplwVIutUpzbXLPH8KIj9SuWNo7PWWE,4323
415
- datahub/ingestion/source/redshift/query.py,sha256=rkWEpxW7HVCtcMQLQ5hAYenE_4q4884B4lL67OULbuo,47814
415
+ datahub/ingestion/source/redshift/query.py,sha256=vVIuNUaU4a7AfMFJZlgLuqi0cGVl0gVz8xZUSnPhWvs,47845
416
416
  datahub/ingestion/source/redshift/redshift.py,sha256=whMujnJxwNT2ZXnOVRrZQiy317hlsvbARzabKmI3oN8,43536
417
417
  datahub/ingestion/source/redshift/redshift_data_reader.py,sha256=zc69jwXHdF-w8J4Hq-ZQ6BjHQ75Ij2iNDMpoRJlcmlU,1724
418
418
  datahub/ingestion/source/redshift/redshift_schema.py,sha256=7F-l_omOuKMuGE_rBWXVPG_GWXFKnCMzC4frNxZB9cs,24800
@@ -895,7 +895,7 @@ datahub/metadata/schemas/ViewProperties.avsc,sha256=3HhcbH5493dJUnEUtFMYMVfbYQ52
895
895
  datahub/metadata/schemas/__init__.py,sha256=uvLNC3VyCkWA_v8e9FdA1leFf46NFKDD0AajCfihepI,581
896
896
  datahub/pydantic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
897
897
  datahub/pydantic/compat.py,sha256=TUEo4kSEeOWVAhV6LQtst1phrpVgGtK4uif4OI5vQ2M,1937
898
- datahub/sdk/__init__.py,sha256=FRnyQWEKsNSuqgVfxFg7afBWp8_9Yr19tKp3PySg_dg,1611
898
+ datahub/sdk/__init__.py,sha256=QeutS6Th8K4E4ZxXuoGrmvahN6zA9Oh9asKk5mw9AIk,1670
899
899
  datahub/sdk/_all_entities.py,sha256=lCa2oeudmrKN7suOBIT5tidGJB8pgL3xD80DQlsYUKI,399
900
900
  datahub/sdk/_attribution.py,sha256=0Trh8steVd27GOr9MKCZeawbuDD2_q3GIsZlCtHqEUg,1321
901
901
  datahub/sdk/_shared.py,sha256=pHVKEJ50BoLw0fLLAm9zYsynNDN_bPI26qlj8nk2iyY,19582
@@ -904,10 +904,10 @@ datahub/sdk/container.py,sha256=yw_vw9Jl1wOYNwMHxQHLz5ZvVQVDWWHi9CWBR3hOCd8,7547
904
904
  datahub/sdk/dataset.py,sha256=5LG4c_8bHeSPYrW88KNXRgiPD8frBjR0OBVrrwdquU4,29152
905
905
  datahub/sdk/entity.py,sha256=Q29AbpS58L4gD8ETwoNIwG-ouytz4c0MSSFi6-jLl_4,6742
906
906
  datahub/sdk/entity_client.py,sha256=Sxe6H6Vr_tqLJu5KW7MJfLWJ6mgh4mbsx7u7MOBpM64,5052
907
- datahub/sdk/main_client.py,sha256=WK3-cWDNaTXzeYd_aKoXhnJVywcWDddxDQjV4bGmIBI,3617
907
+ datahub/sdk/main_client.py,sha256=h2MKRhR-BO0zGCMhF7z2bTncX4hagKrAYwR3wTNTtzA,3666
908
908
  datahub/sdk/resolver_client.py,sha256=nKMAZJt2tRSGfKSzoREIh43PXqjM3umLiYkYHJjo1io,3243
909
909
  datahub/sdk/search_client.py,sha256=h9O_rsphkTdpd5hMPay3xSXfJM761cf4PjNCBwCnFzU,1309
910
- datahub/sdk/search_filters.py,sha256=GGBWvS-iq9CgnTNyc_yw_bQfUSBRa1s6jmIVRdwxiZY,11508
910
+ datahub/sdk/search_filters.py,sha256=WaJKFUKT9P70NBkh36f44rZrJ7zRJpRwu8mN-rEx5y0,11364
911
911
  datahub/secret/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
912
912
  datahub/secret/datahub_secret_store.py,sha256=9u9S87-15jwhj4h0EsAVIMdQLgvstKc8voQux2slxgU,2477
913
913
  datahub/secret/datahub_secrets_client.py,sha256=nDmhziKdvseJHlaDVUcAwK8Fv8maeAaG-ktZtWG2b70,1316
@@ -933,7 +933,7 @@ datahub/sql_parsing/_sqlglot_patch.py,sha256=dpTiGj4Jxzvbi6HkYiOTbZ81CTFwEEo6JgY
933
933
  datahub/sql_parsing/datajob.py,sha256=1X8KpEk-y3_8xJuA_Po27EHZgOcxK9QADI6Om9gSGn0,1751
934
934
  datahub/sql_parsing/query_types.py,sha256=FKjDzszZzsrCfYfm7dgD6T_8865qxWl767fdGyHWBh4,2720
935
935
  datahub/sql_parsing/schema_resolver.py,sha256=ISuingLcQnOJZkNXBkc73uPwYUbbOtERAjgGhJajDiQ,10782
936
- datahub/sql_parsing/split_statements.py,sha256=e1vVGJXqJbLPwjpFS6owROxVI6J0wwccyBV_9qxI0mc,9121
936
+ datahub/sql_parsing/split_statements.py,sha256=OIQXA9e4k3G9Z1y7rbgdtZhMWt4FPnq41cE8Jkm9cBY,9542
937
937
  datahub/sql_parsing/sql_parsing_aggregator.py,sha256=A3_0wSxBJSRowEaslptDpBoKO42XXx5UyTEK9PkekIs,70317
938
938
  datahub/sql_parsing/sql_parsing_common.py,sha256=cZ4WvVyHZuXDGjnBvKMX2_fz2EMextB5WQWcK0_saBo,3155
939
939
  datahub/sql_parsing/sql_parsing_result_utils.py,sha256=prwWTj1EB2fRPv1eMB4EkpFNafIYAt-X8TIK0NWqank,796
@@ -1043,8 +1043,8 @@ datahub_provider/operators/datahub_assertion_operator.py,sha256=uvTQ-jk2F0sbqqxp
1043
1043
  datahub_provider/operators/datahub_assertion_sensor.py,sha256=lCBj_3x1cf5GMNpHdfkpHuyHfVxsm6ff5x2Z5iizcAo,140
1044
1044
  datahub_provider/operators/datahub_operation_operator.py,sha256=aevDp2FzX7FxGlXrR0khoHNbxbhKR2qPEX5e8O2Jyzw,174
1045
1045
  datahub_provider/operators/datahub_operation_sensor.py,sha256=8fcdVBCEPgqy1etTXgLoiHoJrRt_nzFZQMdSzHqSG7M,168
1046
- acryl_datahub-1.0.0.1rc3.dist-info/METADATA,sha256=BTS0H-lGX3ONF9A0odwU_U8VbAUTrcd7K56DDTjG9iM,176849
1047
- acryl_datahub-1.0.0.1rc3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1048
- acryl_datahub-1.0.0.1rc3.dist-info/entry_points.txt,sha256=o3mDeJXSKhsy7XLkuogihraiabBdLn9HaizYXPrxmk0,9710
1049
- acryl_datahub-1.0.0.1rc3.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1050
- acryl_datahub-1.0.0.1rc3.dist-info/RECORD,,
1046
+ acryl_datahub-1.0.0.1rc5.dist-info/METADATA,sha256=tMnH_4TdNIZMpke-1KadBIdM0nx_sJtliYXrZJXUkbs,176849
1047
+ acryl_datahub-1.0.0.1rc5.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
1048
+ acryl_datahub-1.0.0.1rc5.dist-info/entry_points.txt,sha256=o3mDeJXSKhsy7XLkuogihraiabBdLn9HaizYXPrxmk0,9710
1049
+ acryl_datahub-1.0.0.1rc5.dist-info/top_level.txt,sha256=iLjSrLK5ox1YVYcglRUkcvfZPvKlobBWx7CTUXx8_GI,25
1050
+ acryl_datahub-1.0.0.1rc5.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.0.0.1rc3"
3
+ __version__ = "1.0.0.1rc5"
4
4
 
5
5
 
6
6
  def is_dev_mode() -> bool:
@@ -125,9 +125,7 @@ def parse_ts_millis(ts: Optional[float]) -> Optional[datetime]:
125
125
 
126
126
 
127
127
  def make_data_platform_urn(platform: str) -> str:
128
- if platform.startswith("urn:li:dataPlatform:"):
129
- return platform
130
- return DataPlatformUrn.create_from_id(platform).urn()
128
+ return DataPlatformUrn(platform).urn()
131
129
 
132
130
 
133
131
  def make_dataset_urn(platform: str, name: str, env: str = DEFAULT_ENV) -> str:
@@ -1,17 +1,21 @@
1
1
  import json
2
2
  import logging
3
+ import warnings
3
4
  from dataclasses import dataclass
4
5
  from typing import Dict, List, Optional, Sequence, Union
5
6
 
6
7
  from requests import Response
7
8
 
8
9
  from datahub.emitter.mcp import MetadataChangeProposalWrapper
10
+ from datahub.errors import APITracingWarning
9
11
  from datahub.metadata.com.linkedin.pegasus2avro.mxe import (
10
12
  MetadataChangeProposal,
11
13
  )
12
14
 
13
15
  logger = logging.getLogger(__name__)
14
16
 
17
+ _TRACE_HEADER_NAME = "traceparent"
18
+
15
19
 
16
20
  @dataclass
17
21
  class TraceData:
@@ -25,14 +29,11 @@ class TraceData:
25
29
  raise TypeError("data must be a dictionary")
26
30
 
27
31
 
28
- def _extract_trace_id(
29
- response: Response, trace_header: str = "traceparent"
30
- ) -> Optional[str]:
32
+ def _extract_trace_id(response: Response) -> Optional[str]:
31
33
  """
32
34
  Extract trace ID from response headers.
33
35
  Args:
34
36
  response: HTTP response object
35
- trace_header: Name of the trace header to use
36
37
  Returns:
37
38
  Trace ID if found and response is valid, None otherwise
38
39
  """
@@ -40,9 +41,17 @@ def _extract_trace_id(
40
41
  logger.debug(f"Invalid status code: {response.status_code}")
41
42
  return None
42
43
 
43
- trace_id = response.headers.get(trace_header)
44
+ trace_id = response.headers.get(_TRACE_HEADER_NAME)
44
45
  if not trace_id:
45
- logger.debug(f"Missing trace header: {trace_header}")
46
+ # This will only be printed if
47
+ # 1. we're in async mode (checked by the caller)
48
+ # 2. the server did not return a trace ID
49
+ logger.debug(f"Missing trace header: {_TRACE_HEADER_NAME}")
50
+ warnings.warn(
51
+ "No trace ID found in response headers. API tracing is not active - likely due to an outdated server version.",
52
+ APITracingWarning,
53
+ stacklevel=3,
54
+ )
46
55
  return None
47
56
 
48
57
  return trace_id
@@ -51,20 +60,19 @@ def _extract_trace_id(
51
60
  def extract_trace_data(
52
61
  response: Response,
53
62
  aspects_to_trace: Optional[List[str]] = None,
54
- trace_header: str = "traceparent",
55
63
  ) -> Optional[TraceData]:
56
- """
57
- Extract trace data from a response object.
64
+ """Extract trace data from a response object.
65
+
66
+ If we run into a JSONDecodeError, we'll log an error and return None.
67
+
58
68
  Args:
59
69
  response: HTTP response object
60
70
  aspects_to_trace: Optional list of aspect names to extract. If None, extracts all aspects.
61
- trace_header: Name of the trace header to use (default: "traceparent")
71
+
62
72
  Returns:
63
73
  TraceData object if successful, None otherwise
64
- Raises:
65
- JSONDecodeError: If response body cannot be decoded as JSON
66
74
  """
67
- trace_id = _extract_trace_id(response, trace_header)
75
+ trace_id = _extract_trace_id(response)
68
76
  if not trace_id:
69
77
  return None
70
78
 
@@ -104,19 +112,18 @@ def extract_trace_data_from_mcps(
104
112
  response: Response,
105
113
  mcps: Sequence[Union[MetadataChangeProposal, MetadataChangeProposalWrapper]],
106
114
  aspects_to_trace: Optional[List[str]] = None,
107
- trace_header: str = "traceparent",
108
115
  ) -> Optional[TraceData]:
109
- """
110
- Extract trace data from a response object and populate data from provided MCPs.
116
+ """Extract trace data from a response object and populate data from provided MCPs.
117
+
111
118
  Args:
112
119
  response: HTTP response object used only for trace_id extraction
113
120
  mcps: List of MCP URN and aspect data
114
121
  aspects_to_trace: Optional list of aspect names to extract. If None, extracts all aspects.
115
- trace_header: Name of the trace header to use (default: "traceparent")
122
+
116
123
  Returns:
117
124
  TraceData object if successful, None otherwise
118
125
  """
119
- trace_id = _extract_trace_id(response, trace_header)
126
+ trace_id = _extract_trace_id(response)
120
127
  if not trace_id:
121
128
  return None
122
129
 
@@ -5,6 +5,7 @@ import json
5
5
  import logging
6
6
  import os
7
7
  import time
8
+ import warnings
8
9
  from collections import defaultdict
9
10
  from dataclasses import dataclass
10
11
  from datetime import datetime, timedelta
@@ -50,6 +51,7 @@ from datahub.emitter.response_helper import (
50
51
  extract_trace_data_from_mcps,
51
52
  )
52
53
  from datahub.emitter.serialization_helper import pre_json_transform
54
+ from datahub.errors import APITracingWarning
53
55
  from datahub.ingestion.api.closeable import Closeable
54
56
  from datahub.metadata.com.linkedin.pegasus2avro.mxe import (
55
57
  MetadataChangeEvent,
@@ -749,6 +751,12 @@ class DataHubRestEmitter(Closeable, Emitter):
749
751
  trace_flag if trace_flag is not None else self._default_trace_mode
750
752
  )
751
753
  resolved_async_flag = async_flag if async_flag is not None else async_default
754
+ if resolved_trace_flag and not resolved_async_flag:
755
+ warnings.warn(
756
+ "API tracing is only available with async ingestion. For sync mode, API errors will be surfaced as exceptions.",
757
+ APITracingWarning,
758
+ stacklevel=3,
759
+ )
752
760
  return resolved_trace_flag and resolved_async_flag
753
761
 
754
762
  def __repr__(self) -> str:
datahub/errors.py CHANGED
@@ -33,3 +33,7 @@ class MultipleSubtypesWarning(Warning):
33
33
 
34
34
  class ExperimentalWarning(Warning):
35
35
  pass
36
+
37
+
38
+ class APITracingWarning(Warning):
39
+ pass
@@ -1,6 +1,8 @@
1
1
  import dataclasses
2
2
  import enum
3
- from typing import Any, Dict, List, Optional
3
+ from typing import Any, Dict, List, Literal, Optional
4
+
5
+ from typing_extensions import TypeAlias
4
6
 
5
7
  from datahub.emitter.mce_builder import (
6
8
  make_data_platform_urn,
@@ -10,11 +12,29 @@ from datahub.utilities.urns.urn import guess_entity_type
10
12
 
11
13
  RawSearchFilterRule = Dict[str, Any]
12
14
 
15
+ # Mirrors our GraphQL enum: https://datahubproject.io/docs/graphql/enums#filteroperator
16
+ FilterOperator: TypeAlias = Literal[
17
+ "CONTAIN",
18
+ "EQUAL",
19
+ "IEQUAL",
20
+ "IN",
21
+ "EXISTS",
22
+ "GREATER_THAN",
23
+ "GREATER_THAN_OR_EQUAL_TO",
24
+ "LESS_THAN",
25
+ "LESS_THAN_OR_EQUAL_TO",
26
+ "START_WITH",
27
+ "END_WITH",
28
+ "DESCENDANTS_INCL",
29
+ "ANCESTORS_INCL",
30
+ "RELATED_INCL",
31
+ ]
32
+
13
33
 
14
34
  @dataclasses.dataclass
15
35
  class SearchFilterRule:
16
36
  field: str
17
- condition: str # TODO: convert to an enum
37
+ condition: FilterOperator
18
38
  values: List[str]
19
39
  negated: bool = False
20
40