datacontract-cli 0.10.16__py3-none-any.whl → 0.10.19__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 datacontract-cli might be problematic. Click here for more details.
- datacontract/breaking/breaking_rules.py +4 -0
- datacontract/cli.py +49 -32
- datacontract/data_contract.py +14 -11
- datacontract/engines/fastjsonschema/check_jsonschema.py +15 -4
- datacontract/engines/soda/check_soda_execute.py +9 -4
- datacontract/engines/soda/connections/databricks.py +12 -3
- datacontract/engines/soda/connections/duckdb.py +22 -9
- datacontract/export/data_caterer_converter.py +20 -7
- datacontract/export/dbml_converter.py +2 -2
- datacontract/export/dbt_converter.py +41 -16
- datacontract/export/exporter.py +6 -2
- datacontract/export/exporter_factory.py +48 -14
- datacontract/export/iceberg_converter.py +3 -3
- datacontract/export/markdown_converter.py +208 -0
- datacontract/export/odcs_v3_exporter.py +6 -0
- datacontract/export/sodacl_converter.py +22 -5
- datacontract/export/sql_converter.py +1 -1
- datacontract/export/sql_type_converter.py +28 -2
- datacontract/export/sqlalchemy_converter.py +3 -1
- datacontract/imports/csv_importer.py +89 -0
- datacontract/imports/dbml_importer.py +1 -1
- datacontract/imports/dbt_importer.py +94 -12
- datacontract/imports/importer.py +1 -0
- datacontract/imports/importer_factory.py +5 -0
- datacontract/imports/odcs_v2_importer.py +1 -1
- datacontract/imports/odcs_v3_importer.py +1 -1
- datacontract/imports/sql_importer.py +1 -1
- datacontract/init/init_template.py +20 -0
- datacontract/integration/datamesh_manager.py +15 -9
- datacontract/lint/linters/field_reference_linter.py +10 -1
- datacontract/lint/resolve.py +48 -14
- datacontract/lint/schema.py +10 -3
- datacontract/model/data_contract_specification.py +13 -4
- datacontract/model/run.py +1 -0
- datacontract/schemas/datacontract-1.1.0.init.yaml +91 -0
- datacontract/schemas/datacontract-1.1.0.schema.json +1975 -0
- datacontract/schemas/odcs-3.0.1.schema.json +2634 -0
- datacontract/templates/datacontract.html +20 -1
- datacontract/templates/partials/definition.html +15 -5
- datacontract/templates/partials/model_field.html +10 -1
- {datacontract_cli-0.10.16.dist-info → datacontract_cli-0.10.19.dist-info}/METADATA +477 -343
- {datacontract_cli-0.10.16.dist-info → datacontract_cli-0.10.19.dist-info}/RECORD +46 -42
- {datacontract_cli-0.10.16.dist-info → datacontract_cli-0.10.19.dist-info}/WHEEL +1 -1
- datacontract/init/download_datacontract_file.py +0 -17
- datacontract/integration/opentelemetry.py +0 -103
- {datacontract_cli-0.10.16.dist-info → datacontract_cli-0.10.19.dist-info}/LICENSE +0 -0
- {datacontract_cli-0.10.16.dist-info → datacontract_cli-0.10.19.dist-info}/entry_points.txt +0 -0
- {datacontract_cli-0.10.16.dist-info → datacontract_cli-0.10.19.dist-info}/top_level.txt +0 -0
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
datacontract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
datacontract/cli.py,sha256=
|
|
3
|
-
datacontract/data_contract.py,sha256=
|
|
2
|
+
datacontract/cli.py,sha256=LCXFYd8kN4yrsgLlG8ZaYBkIRmbNWtpWaFH6GdgIMSo,17100
|
|
3
|
+
datacontract/data_contract.py,sha256=KzsF4xvMWZnyTrwL7YDE0_dYWrWG9Bn7efCmW3vK5SI,14767
|
|
4
4
|
datacontract/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
datacontract/web.py,sha256=MePB-XJvTZObMzrk3tIW8-bAvk-QcEEt767RVos3Zoc,2105
|
|
6
6
|
datacontract/breaking/breaking.py,sha256=vUjPZzGsOF_ufTjdKa2T_gjQgPtZrZKytmcatkUr7ck,20428
|
|
7
|
-
datacontract/breaking/breaking_rules.py,sha256=
|
|
7
|
+
datacontract/breaking/breaking_rules.py,sha256=OKwYWCMkIob2uX8zxav7LbIhx_6RC4msioBjuNlox1k,4060
|
|
8
8
|
datacontract/catalog/catalog.py,sha256=wmv_2BBxHhNBlilAmQHHhNe4tK14DowkyIOVaQW2DWU,2691
|
|
9
9
|
datacontract/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
datacontract/engines/datacontract/check_that_datacontract_contains_valid_servers_configuration.py,sha256=TXO47ON3NjwYI4Y2eBYklMOCo7vAtYzqLPAhZhii6dg,1565
|
|
11
11
|
datacontract/engines/datacontract/check_that_datacontract_file_exists.py,sha256=Vw-7U0GmQT2127tybxggZfpRFiZVgoIh6ndkTGM0FP4,665
|
|
12
|
-
datacontract/engines/fastjsonschema/check_jsonschema.py,sha256
|
|
12
|
+
datacontract/engines/fastjsonschema/check_jsonschema.py,sha256=-knTZ-NsHpBWCoR7r1JP5iYSWx697mugijmqUPx0pEY,10307
|
|
13
13
|
datacontract/engines/fastjsonschema/s3/s3_read_files.py,sha256=vuz_hLF2VD8LR_prjQpPLBU8Is-iHLAvqp4KwclOv9I,1157
|
|
14
14
|
datacontract/engines/soda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
datacontract/engines/soda/check_soda_execute.py,sha256=
|
|
15
|
+
datacontract/engines/soda/check_soda_execute.py,sha256=YfLumuxX_zZklP2q7fjytMtwpxr-2OMBpb6rAmTL7AE,8204
|
|
16
16
|
datacontract/engines/soda/connections/bigquery.py,sha256=C-8kxmzpYe88bJp80ObHFLMh4rpnIjnUQ7XOj0Ke7lk,903
|
|
17
17
|
datacontract/engines/soda/connections/dask.py,sha256=Yy6Et2n_vDVsdjtqyBWDSZt7mnjPzPk_MZ-92VZHfnY,1496
|
|
18
|
-
datacontract/engines/soda/connections/databricks.py,sha256=
|
|
19
|
-
datacontract/engines/soda/connections/duckdb.py,sha256=
|
|
18
|
+
datacontract/engines/soda/connections/databricks.py,sha256=cMRasuO0MrSKVgHPB-9uFTGTZPFg6z9Kpk3tJ0SdR0s,943
|
|
19
|
+
datacontract/engines/soda/connections/duckdb.py,sha256=9AbupEzP-9dGlhRnO9GLY2HMFlz08XazdmYK9PGIeEQ,6705
|
|
20
20
|
datacontract/engines/soda/connections/kafka.py,sha256=bSC-TmZPmQvOr1rMaDtankcfYni4hmfbQooFaSlC_uc,8452
|
|
21
21
|
datacontract/engines/soda/connections/postgres.py,sha256=9GTF4Es3M5vb7ocSGqAxXmslvkS5CjsPQGIuo020CFc,626
|
|
22
22
|
datacontract/engines/soda/connections/snowflake.py,sha256=rfG2ysuqNM6TkvyqQKcGHFsTGJ6AROmud5VleUDRrb0,749
|
|
@@ -27,80 +27,84 @@ datacontract/export/avro_converter.py,sha256=xNRo0eXR3n--EA8SziarWqhlvOYtQWkWJtE
|
|
|
27
27
|
datacontract/export/avro_idl_converter.py,sha256=SGO7JfI9UGXLYFR5wMGNUH1qf6kt9lF6dUU9roVqnFo,9878
|
|
28
28
|
datacontract/export/bigquery_converter.py,sha256=VSBdVGWrlar18ETzgNArxDzk8Zt5JcAc_wKjfwLpG_A,4734
|
|
29
29
|
datacontract/export/csv_type_converter.py,sha256=ZZuJwBgQnafZC7PPvAXsBf2IajPJq8TYZ1l8Qq0GYeI,1290
|
|
30
|
-
datacontract/export/data_caterer_converter.py,sha256=
|
|
31
|
-
datacontract/export/dbml_converter.py,sha256=
|
|
32
|
-
datacontract/export/dbt_converter.py,sha256=
|
|
30
|
+
datacontract/export/data_caterer_converter.py,sha256=eSEuy3TbqUIG_lHYEBOydAgp_CJNoGArXrcJvh81wcw,5984
|
|
31
|
+
datacontract/export/dbml_converter.py,sha256=f_OZEFwRUyL-Kg2yn_G58I8iz1VfFrZh8Nbw3Wq0JDo,4777
|
|
32
|
+
datacontract/export/dbt_converter.py,sha256=BPvcKyT-v1C_zcYh8ocn5qeNVUjTjYIcMVxnq8BY-Us,10342
|
|
33
33
|
datacontract/export/dcs_exporter.py,sha256=RALQ7bLAjak7EsoFFL2GFX2Oju7pnCDPCdRN_wo9wHM,210
|
|
34
|
-
datacontract/export/exporter.py,sha256=
|
|
35
|
-
datacontract/export/exporter_factory.py,sha256=
|
|
34
|
+
datacontract/export/exporter.py,sha256=b9z5vjY5dsc0Nw-gG03RkNYyOuidMk-RGkS9GAE-elk,3051
|
|
35
|
+
datacontract/export/exporter_factory.py,sha256=sW6-43FiOFTzqgho2jvSzhd7_PGqWApfKOnfFFzjs90,6021
|
|
36
36
|
datacontract/export/go_converter.py,sha256=Ttvbfu3YU-3GBwRD6nwCsFyZuc_hiIvJD-Jg2sT5WLw,3331
|
|
37
37
|
datacontract/export/great_expectations_converter.py,sha256=zMaHaj5DLj_Q_q-iFEa7EZHW-qHdFMxWL4MiMIFKV80,10505
|
|
38
38
|
datacontract/export/html_export.py,sha256=ojazWrb0AwSc7Vr72M_otMo-3PA8mfi8tfIy9BCXk9o,2578
|
|
39
|
-
datacontract/export/iceberg_converter.py,sha256=
|
|
39
|
+
datacontract/export/iceberg_converter.py,sha256=ArcQ_Y3z_W4_kGDU_8jPRx2-pHpP3Nhx1zYoETOL3c4,6804
|
|
40
40
|
datacontract/export/jsonschema_converter.py,sha256=2MT82MurcQQbrVDRj1kFsxnmFd9scNSfYI1upQSecl4,5631
|
|
41
|
+
datacontract/export/markdown_converter.py,sha256=chtaZX4vXTee7JCMYmWiDQ9m55gwJjHPw6SEM3UOwpQ,6467
|
|
41
42
|
datacontract/export/odcs_v2_exporter.py,sha256=0nMI-zTENNs94bllm_Qv3V-8-QyS8jnBW1Be9fEJCmU,4679
|
|
42
|
-
datacontract/export/odcs_v3_exporter.py,sha256=
|
|
43
|
+
datacontract/export/odcs_v3_exporter.py,sha256=52WggPBpUi9AwGrVjlScojSJ2DhhgMuFIxRQokIvQ_o,12542
|
|
43
44
|
datacontract/export/pandas_type_converter.py,sha256=464pQ3JQKFQa1TO0HBNcEoZvQye_yUbY6jQtiBaphSc,1117
|
|
44
45
|
datacontract/export/protobuf_converter.py,sha256=9K0fzBGbqlj9AhQumw2oq53hyn_QDCT3UlyH2uXJdC0,3192
|
|
45
46
|
datacontract/export/pydantic_converter.py,sha256=1Lt9F8i6zyQYb44MyQtsXwCWWXYxZ47SmzArr_uPqsU,5579
|
|
46
47
|
datacontract/export/rdf_converter.py,sha256=4gnKus37Geth4MJ3Ruc8AbnpD_Ll9OCx8oTIEKScvh8,6435
|
|
47
|
-
datacontract/export/sodacl_converter.py,sha256=
|
|
48
|
+
datacontract/export/sodacl_converter.py,sha256=lndXXnvWs3UYQ4rVFouK7TtqqdkZipVPe77xTMqXz6U,11620
|
|
48
49
|
datacontract/export/spark_converter.py,sha256=-6P2_VRFqGfSF7n_lJcD-fuY9Pv8qoH-ud6g8Zimpz4,7190
|
|
49
|
-
datacontract/export/sql_converter.py,sha256=
|
|
50
|
-
datacontract/export/sql_type_converter.py,sha256=
|
|
51
|
-
datacontract/export/sqlalchemy_converter.py,sha256=
|
|
50
|
+
datacontract/export/sql_converter.py,sha256=BGjmOAlzB5QfzJiXP61ajV0wj4M5oJrmNZZe_4Lo1Ik,4821
|
|
51
|
+
datacontract/export/sql_type_converter.py,sha256=R3NmRPtShDHjiETLL1PEdwg5t53-I5dCJMthcsqEJxw,13100
|
|
52
|
+
datacontract/export/sqlalchemy_converter.py,sha256=0DMncvA811lTtd5q4ZORREQ9YH1vQm1lJeqMWsFvloE,6463
|
|
52
53
|
datacontract/export/terraform_converter.py,sha256=ExFoEvErVk-gBnWJiqC38SxDUmUEydpACWc917l5RyM,2163
|
|
53
54
|
datacontract/imports/avro_importer.py,sha256=hpGvO6uv2zcupJC8-wC-c-vbjNb83IQ560a5F3MsEFA,9937
|
|
54
55
|
datacontract/imports/bigquery_importer.py,sha256=7TcP9FDsIas5LwJZ-HrOPXZ-NuR056sxLfDDh3vjo8E,8419
|
|
55
|
-
datacontract/imports/
|
|
56
|
-
datacontract/imports/
|
|
56
|
+
datacontract/imports/csv_importer.py,sha256=NT9N9kOSZe6YSJVsYOKF9-d7fqih3Q1zssQzem0finM,2921
|
|
57
|
+
datacontract/imports/dbml_importer.py,sha256=o0IOgvXN34lU1FICDHm_QUTv0DKsgwbHPHUDxQhIapE,3872
|
|
58
|
+
datacontract/imports/dbt_importer.py,sha256=hQwqD9vbvwLLc6Yj3tQbar5ldI0pV-ynSiz7CZZ0JCc,8290
|
|
57
59
|
datacontract/imports/glue_importer.py,sha256=fiJPkvfwOCsaKKCGW19-JM5CCGXZ2mkNrVtUzp2iw6g,8370
|
|
58
60
|
datacontract/imports/iceberg_importer.py,sha256=vadGJVqQKgG-j8swUytZALFB8QjbGRqZPCcPcCy0vco,5923
|
|
59
|
-
datacontract/imports/importer.py,sha256=
|
|
60
|
-
datacontract/imports/importer_factory.py,sha256=
|
|
61
|
+
datacontract/imports/importer.py,sha256=X4M0SZiRQsz8TGm-FSRuh6bs6qny7V8odyQ7l_1DwNg,876
|
|
62
|
+
datacontract/imports/importer_factory.py,sha256=8ed9-ceJlFMf-AIAyuI6Uzs05CqEs1nPlLA-tvfI0bU,3639
|
|
61
63
|
datacontract/imports/jsonschema_importer.py,sha256=67H__XLugV4vguHrIqzW02dtx27zYTWnOms4D1ma3bk,4961
|
|
62
64
|
datacontract/imports/odcs_importer.py,sha256=w1TumifVSDgSwsxWV2VmbdzHkb_3vNBKt6mEVE-P284,2042
|
|
63
|
-
datacontract/imports/odcs_v2_importer.py,sha256=
|
|
64
|
-
datacontract/imports/odcs_v3_importer.py,sha256=
|
|
65
|
+
datacontract/imports/odcs_v2_importer.py,sha256=w_K9bcv0HHlhEbr7sT0NwgkuSNVkqWBr64UPqERA0Fs,7154
|
|
66
|
+
datacontract/imports/odcs_v3_importer.py,sha256=NB16EQjVuywFsI-Ti0AfMXWZj__fdHu0iKA1IPSBhmo,13019
|
|
65
67
|
datacontract/imports/parquet_importer.py,sha256=W_0_16mX4stwDUt4GM2L7dnGmTpAySab5k13-OlTCCc,3095
|
|
66
68
|
datacontract/imports/spark_importer.py,sha256=h2na1YtdJYu9Oz07tSvwx8L4RX6aLCCDVkAv-RTKyVA,5100
|
|
67
|
-
datacontract/imports/sql_importer.py,sha256=
|
|
69
|
+
datacontract/imports/sql_importer.py,sha256=a-zlpo7574fX4R6W6BzAe_9GBm2yjNk_B_GdW-vC6Yk,2893
|
|
68
70
|
datacontract/imports/unity_importer.py,sha256=UcPYABhLZaWNl5IkCazwAuMoVDdujsu_QteuV_Q9hgI,6737
|
|
69
|
-
datacontract/init/
|
|
70
|
-
datacontract/integration/datamesh_manager.py,sha256=
|
|
71
|
-
datacontract/integration/opentelemetry.py,sha256=oTIhP066qM2By9Evttq9LDUgFq3sr8In0ENdS1TIsz4,3827
|
|
71
|
+
datacontract/init/init_template.py,sha256=BMawR-AF_vXyn_-Co-XoT8Dxj9b55V8xKk2KkJK-c1o,721
|
|
72
|
+
datacontract/integration/datamesh_manager.py,sha256=6_mHRQAqw-KCfVtejNxULN4ihBZTZikf_5p0pYHer7g,2849
|
|
72
73
|
datacontract/lint/files.py,sha256=tg0vq_w4LQsEr_8A5qr4hUJmHeGalUpsXJXC1t-OGC0,471
|
|
73
74
|
datacontract/lint/lint.py,sha256=Ew0n3ooXxmCVnUxJ_cDoacsD82QdMZYnKrxnG9J0sWQ,5077
|
|
74
|
-
datacontract/lint/resolve.py,sha256=
|
|
75
|
+
datacontract/lint/resolve.py,sha256=_QtoAReUhiJ8I_4fyNimyUnHhpZGYmmDHFA59wUTeFw,10684
|
|
75
76
|
datacontract/lint/resources.py,sha256=nfeZmORh1aP7EKpMKCmfbS04Te8pQ0nz64vJVkHOq3c,647
|
|
76
|
-
datacontract/lint/schema.py,sha256=
|
|
77
|
+
datacontract/lint/schema.py,sha256=4pYX6JX6SkASftyqaWTodKFRVPi2qV0_Z60tvaCOk80,1813
|
|
77
78
|
datacontract/lint/urls.py,sha256=W7Edcd8Iw4NjokVtuSshEfzsXshQpuh_tpO73aM9dsM,2294
|
|
78
79
|
datacontract/lint/linters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
80
|
datacontract/lint/linters/description_linter.py,sha256=7fla7FQwDa-1UrLFCFKFoeUzkR91e4o9W6ySKSW6_U8,1555
|
|
80
81
|
datacontract/lint/linters/example_model_linter.py,sha256=tmgxGxC-GzMUxFumTOuuASdz9ZlncBZHasPGJsWnDT8,3973
|
|
81
82
|
datacontract/lint/linters/field_pattern_linter.py,sha256=lreGvOW3v_Glah_SriVe9ejZ7EuR6_gJsdr2tEORB_8,1084
|
|
82
|
-
datacontract/lint/linters/field_reference_linter.py,sha256=
|
|
83
|
+
datacontract/lint/linters/field_reference_linter.py,sha256=65GnbBtazn55dXslujOho3YIHCwNy9DDp0m56pNMkUk,2021
|
|
83
84
|
datacontract/lint/linters/notice_period_linter.py,sha256=6r413aEVOVHWJHb33-68ecVTAUNzbxL4me6ebmPcgpE,2130
|
|
84
85
|
datacontract/lint/linters/quality_schema_linter.py,sha256=ZXFHlMLFV1GZejizbUdfW6-msffFECoDGNsdynaPnog,2182
|
|
85
86
|
datacontract/lint/linters/valid_constraints_linter.py,sha256=qTFh1X3I9wOtAxuXlvbGesCQ3GQ6iWc-MT_ttIybRsw,4916
|
|
86
87
|
datacontract/model/breaking_change.py,sha256=BIDEUo1U2CQLVT2-I5PyFttxAj6zQPI1UUkEoOOQXMY,2249
|
|
87
|
-
datacontract/model/data_contract_specification.py,sha256=
|
|
88
|
+
datacontract/model/data_contract_specification.py,sha256=HsHllx4-Uk-K9LSQspja9OwI2fSavzAsZ4C4pfuPl48,8123
|
|
88
89
|
datacontract/model/exceptions.py,sha256=zW9NoyzwsND-c9UqgyTVuezUVGEc6KK1Uc2zl12loyo,1178
|
|
89
90
|
datacontract/model/odcs.py,sha256=9PXwm72FASjNwteF1Jn591iP3-St0aq16Cpsk0PkEW8,389
|
|
90
|
-
datacontract/model/run.py,sha256=
|
|
91
|
-
datacontract/
|
|
91
|
+
datacontract/model/run.py,sha256=zIosfMAKB3WVsWN3UcFQteHaQ04SlYZX45opaRXklNw,2827
|
|
92
|
+
datacontract/schemas/datacontract-1.1.0.init.yaml,sha256=_WQX6NRwimXlPVKcKeHLd4mFL0TJ2vYH0WnyMXZeQ8Y,1828
|
|
93
|
+
datacontract/schemas/datacontract-1.1.0.schema.json,sha256=3Bu2rxEjkF6dNLcqi1GF4KoXBnEIopaJ87Qb8S4zUvg,62872
|
|
94
|
+
datacontract/schemas/odcs-3.0.1.schema.json,sha256=bRZsSXA0fV0EmV_8f1K68PlXu1m4K7JcuHpLnY3ESwQ,72933
|
|
95
|
+
datacontract/templates/datacontract.html,sha256=gCq5pfFR-L9DLznVjrUlvyQe597h5lZzD7xpQum_OEM,14534
|
|
92
96
|
datacontract/templates/index.html,sha256=nyi9nrEsSPuOrXszKzqkqwZGveXsdy1PLJp2g9oDw0A,12517
|
|
93
97
|
datacontract/templates/partials/datacontract_information.html,sha256=7ZBxgEgi2XndKBypeOpe03oCSRPOujC6NVlN7zexGNM,6221
|
|
94
98
|
datacontract/templates/partials/datacontract_servicelevels.html,sha256=ed3QgB11B0Qq2h_NwaroGZ4pQMBPEhfeQaoS-qEipqY,11401
|
|
95
99
|
datacontract/templates/partials/datacontract_terms.html,sha256=1cnJcOTpxwot2BCuZmkLF_SPfiVloLs3c8mj9WfE4sc,1865
|
|
96
|
-
datacontract/templates/partials/definition.html,sha256=
|
|
100
|
+
datacontract/templates/partials/definition.html,sha256=SveQlfdTyCHuAu3455VXL8_Cgv298lD_dgtdwA_YaAg,7461
|
|
97
101
|
datacontract/templates/partials/example.html,sha256=F1dWbHDIXQScgfs4OVgqM1lR4uV4xX5j6suasXHNM88,1204
|
|
98
|
-
datacontract/templates/partials/model_field.html,sha256=
|
|
102
|
+
datacontract/templates/partials/model_field.html,sha256=QA0U95hHthEc66AjSYk4Di24hU-pHZbef0Sz-hSpdGM,7215
|
|
99
103
|
datacontract/templates/partials/server.html,sha256=WkWFbz1ZvhIAUQQhH5Lkwb0HZRW907ehEnFmJSkpquQ,6235
|
|
100
104
|
datacontract/templates/style/output.css,sha256=F3oEhUpuv8kA_dWr4pJymBS_Ju6huIIZdLMkJzPzMmU,25647
|
|
101
|
-
datacontract_cli-0.10.
|
|
102
|
-
datacontract_cli-0.10.
|
|
103
|
-
datacontract_cli-0.10.
|
|
104
|
-
datacontract_cli-0.10.
|
|
105
|
-
datacontract_cli-0.10.
|
|
106
|
-
datacontract_cli-0.10.
|
|
105
|
+
datacontract_cli-0.10.19.dist-info/LICENSE,sha256=23h64qnSeIZ0DKeziWAKC-zBCt328iSbRbWBrXoYRb4,2210
|
|
106
|
+
datacontract_cli-0.10.19.dist-info/METADATA,sha256=hF27km7hZIRpbFfD0rshENziv1IO80ZhVOGRXKLjF_k,98715
|
|
107
|
+
datacontract_cli-0.10.19.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
108
|
+
datacontract_cli-0.10.19.dist-info/entry_points.txt,sha256=D3Eqy4q_Z6bHauGd4ppIyQglwbrm1AJnLau4Ppbw9Is,54
|
|
109
|
+
datacontract_cli-0.10.19.dist-info/top_level.txt,sha256=VIRjd8EIUrBYWjEXJJjtdUgc0UAJdPZjmLiOR8BRBYM,13
|
|
110
|
+
datacontract_cli-0.10.19.dist-info/RECORD,,
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
import requests
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def download_datacontract_file(file_path: str, from_url: str, overwrite_file: bool):
|
|
7
|
-
if not overwrite_file and os.path.exists(file_path):
|
|
8
|
-
raise FileExistsException()
|
|
9
|
-
|
|
10
|
-
with requests.get(from_url) as response:
|
|
11
|
-
response.raise_for_status()
|
|
12
|
-
with open(file_path, "w") as f:
|
|
13
|
-
f.write(response.text)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class FileExistsException(Exception):
|
|
17
|
-
pass
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import math
|
|
3
|
-
import os
|
|
4
|
-
from importlib import metadata
|
|
5
|
-
|
|
6
|
-
from opentelemetry import metrics
|
|
7
|
-
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter as OTLPgRPCMetricExporter
|
|
8
|
-
from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
|
|
9
|
-
from opentelemetry.metrics import Observation
|
|
10
|
-
from opentelemetry.sdk.metrics import MeterProvider
|
|
11
|
-
from opentelemetry.sdk.metrics.export import ConsoleMetricExporter, PeriodicExportingMetricReader
|
|
12
|
-
|
|
13
|
-
from datacontract.model.run import Run
|
|
14
|
-
|
|
15
|
-
# Publishes metrics of a test run.
|
|
16
|
-
# Metric contains the values:
|
|
17
|
-
# 0 == test run passed,
|
|
18
|
-
# 1 == test run has warnings
|
|
19
|
-
# 2 == test run failed
|
|
20
|
-
# 3 == test run not possible due to an error
|
|
21
|
-
# 4 == test status unknown
|
|
22
|
-
#
|
|
23
|
-
# Tested with these environment variables:
|
|
24
|
-
#
|
|
25
|
-
# OTEL_SERVICE_NAME=datacontract-cli
|
|
26
|
-
# OTEL_EXPORTER_OTLP_ENDPOINT=https://YOUR_ID.apm.westeurope.azure.elastic-cloud.com:443
|
|
27
|
-
# OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer%20secret (Optional, when using SaaS Products)
|
|
28
|
-
# OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf and OTEL_EXPORTER_OTLP_PROTOCOL=grpc
|
|
29
|
-
#
|
|
30
|
-
# Current limitations:
|
|
31
|
-
# - no gRPC support
|
|
32
|
-
# - currently, only ConsoleExporter and OTLP Exporter
|
|
33
|
-
# - Metrics only, no logs yet (but loosely planned)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def publish_test_results_to_opentelemetry(run: Run):
|
|
37
|
-
try:
|
|
38
|
-
if run.dataContractId is None:
|
|
39
|
-
raise Exception("Cannot publish run results, as data contract ID is unknown")
|
|
40
|
-
|
|
41
|
-
endpoint = os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
|
|
42
|
-
logging.info(f"Publishing test results to opentelemetry at {endpoint}")
|
|
43
|
-
|
|
44
|
-
telemetry = Telemetry()
|
|
45
|
-
provider = metrics.get_meter_provider()
|
|
46
|
-
meter = provider.get_meter("com.datacontract.cli", metadata.version("datacontract-cli"))
|
|
47
|
-
meter.create_observable_gauge(
|
|
48
|
-
name="datacontract.cli.test",
|
|
49
|
-
callbacks=[lambda x: _to_observation_callback(run)],
|
|
50
|
-
unit="result",
|
|
51
|
-
description="The overall result of the data contract test run",
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
telemetry.publish()
|
|
55
|
-
except Exception as e:
|
|
56
|
-
logging.error(f"Failed publishing test results. Error: {str(e)}")
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def _to_observation_callback(run):
|
|
60
|
-
yield _to_observation(run)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
def _to_observation(run):
|
|
64
|
-
attributes = {
|
|
65
|
-
"datacontract.id": run.dataContractId,
|
|
66
|
-
"datacontract.version": run.dataContractVersion,
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if run.result == "passed":
|
|
70
|
-
result_value = 0 # think of exit codes
|
|
71
|
-
elif run.result == "warning":
|
|
72
|
-
result_value = 1
|
|
73
|
-
elif run.result == "failed":
|
|
74
|
-
result_value = 2
|
|
75
|
-
elif run.result == "error":
|
|
76
|
-
result_value = 3
|
|
77
|
-
else:
|
|
78
|
-
result_value = 4
|
|
79
|
-
return Observation(value=result_value, attributes=attributes)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class Telemetry:
|
|
83
|
-
def __init__(self):
|
|
84
|
-
protocol = os.getenv("OTEL_EXPORTER_OTLP_PROTOCOL")
|
|
85
|
-
|
|
86
|
-
# lower to allow grpc, GRPC and alike values.
|
|
87
|
-
if protocol and protocol.lower() == "grpc":
|
|
88
|
-
self.remote_exporter = OTLPgRPCMetricExporter()
|
|
89
|
-
else:
|
|
90
|
-
# Fallback to default OTEL http/protobuf which is used when the variable is not set.
|
|
91
|
-
# This Exporter also works for http/json.
|
|
92
|
-
self.remote_exporter = OTLPMetricExporter()
|
|
93
|
-
|
|
94
|
-
self.console_exporter = ConsoleMetricExporter()
|
|
95
|
-
# using math.inf so it does not collect periodically. we do this in collect ourselves, one-time.
|
|
96
|
-
self.reader = PeriodicExportingMetricReader(self.console_exporter, export_interval_millis=math.inf)
|
|
97
|
-
self.remote_reader = PeriodicExportingMetricReader(self.remote_exporter, export_interval_millis=math.inf)
|
|
98
|
-
provider = MeterProvider(metric_readers=[self.reader, self.remote_reader])
|
|
99
|
-
metrics.set_meter_provider(provider)
|
|
100
|
-
|
|
101
|
-
def publish(self):
|
|
102
|
-
self.reader.collect()
|
|
103
|
-
self.remote_reader.collect()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|