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.
- {acryl_datahub-1.0.0.1rc3.dist-info → acryl_datahub-1.0.0.1rc5.dist-info}/METADATA +2417 -2417
- {acryl_datahub-1.0.0.1rc3.dist-info → acryl_datahub-1.0.0.1rc5.dist-info}/RECORD +22 -22
- datahub/_version.py +1 -1
- datahub/emitter/mce_builder.py +1 -3
- datahub/emitter/response_helper.py +25 -18
- datahub/emitter/rest_emitter.py +8 -0
- datahub/errors.py +4 -0
- datahub/ingestion/graph/filters.py +22 -2
- datahub/ingestion/source/gc/soft_deleted_entity_cleanup.py +101 -104
- datahub/ingestion/source/ge_data_profiler.py +11 -1
- datahub/ingestion/source/powerbi/rest_api_wrapper/powerbi_api.py +11 -11
- datahub/ingestion/source/redshift/lineage_v2.py +9 -1
- datahub/ingestion/source/redshift/query.py +1 -1
- datahub/ingestion/source/superset.py +153 -13
- datahub/sdk/__init__.py +1 -0
- datahub/sdk/main_client.py +2 -1
- datahub/sdk/search_filters.py +18 -23
- datahub/sql_parsing/split_statements.py +12 -2
- {acryl_datahub-1.0.0.1rc3.dist-info → acryl_datahub-1.0.0.1rc5.dist-info}/WHEEL +0 -0
- {acryl_datahub-1.0.0.1rc3.dist-info → acryl_datahub-1.0.0.1rc5.dist-info}/entry_points.txt +0 -0
- {acryl_datahub-1.0.0.1rc3.dist-info → acryl_datahub-1.0.0.1rc5.dist-info}/licenses/LICENSE +0 -0
- {acryl_datahub-1.0.0.1rc3.dist-info → acryl_datahub-1.0.0.1rc5.dist-info}/top_level.txt +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
acryl_datahub-1.0.0.
|
|
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=
|
|
4
|
+
datahub/_version.py,sha256=WcqnUOhppm3OjJxRxReX0PiJpy4Wv0kAAnaBQ0m4FCw,323
|
|
5
5
|
datahub/entrypoints.py,sha256=2TYgHhs3sCxJlojIHjqfxzt3_ImPwPzq4vBtsUuMqu4,8885
|
|
6
|
-
datahub/errors.py,sha256=
|
|
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=
|
|
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=
|
|
129
|
-
datahub/emitter/rest_emitter.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
1047
|
-
acryl_datahub-1.0.0.
|
|
1048
|
-
acryl_datahub-1.0.0.
|
|
1049
|
-
acryl_datahub-1.0.0.
|
|
1050
|
-
acryl_datahub-1.0.0.
|
|
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
datahub/emitter/mce_builder.py
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
44
|
+
trace_id = response.headers.get(_TRACE_HEADER_NAME)
|
|
44
45
|
if not trace_id:
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
122
|
+
|
|
116
123
|
Returns:
|
|
117
124
|
TraceData object if successful, None otherwise
|
|
118
125
|
"""
|
|
119
|
-
trace_id = _extract_trace_id(response
|
|
126
|
+
trace_id = _extract_trace_id(response)
|
|
120
127
|
if not trace_id:
|
|
121
128
|
return None
|
|
122
129
|
|
datahub/emitter/rest_emitter.py
CHANGED
|
@@ -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
|
@@ -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:
|
|
37
|
+
condition: FilterOperator
|
|
18
38
|
values: List[str]
|
|
19
39
|
negated: bool = False
|
|
20
40
|
|