pysdmx 1.10.1__py3-none-any.whl → 1.12.0__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.
Files changed (38) hide show
  1. pysdmx/__init__.py +1 -1
  2. pysdmx/api/fmr/maintenance.py +10 -5
  3. pysdmx/io/input_processor.py +4 -0
  4. pysdmx/io/json/fusion/messages/constraint.py +22 -1
  5. pysdmx/io/json/fusion/messages/dsd.py +20 -14
  6. pysdmx/io/json/fusion/messages/msd.py +6 -9
  7. pysdmx/io/json/fusion/messages/schema.py +20 -1
  8. pysdmx/io/json/sdmxjson2/messages/core.py +12 -5
  9. pysdmx/io/json/sdmxjson2/messages/dsd.py +11 -17
  10. pysdmx/io/json/sdmxjson2/messages/msd.py +2 -5
  11. pysdmx/io/json/sdmxjson2/messages/report.py +7 -3
  12. pysdmx/io/json/sdmxjson2/messages/schema.py +38 -5
  13. pysdmx/io/json/sdmxjson2/messages/structure.py +7 -3
  14. pysdmx/io/json/sdmxjson2/reader/metadata.py +3 -3
  15. pysdmx/io/json/sdmxjson2/reader/structure.py +3 -3
  16. pysdmx/io/json/sdmxjson2/writer/_helper.py +118 -0
  17. pysdmx/io/json/sdmxjson2/writer/v2_0/__init__.py +1 -0
  18. pysdmx/io/json/sdmxjson2/writer/v2_0/metadata.py +33 -0
  19. pysdmx/io/json/sdmxjson2/writer/v2_0/structure.py +33 -0
  20. pysdmx/io/json/sdmxjson2/writer/v2_1/__init__.py +1 -0
  21. pysdmx/io/json/sdmxjson2/writer/v2_1/metadata.py +31 -0
  22. pysdmx/io/json/sdmxjson2/writer/v2_1/structure.py +33 -0
  23. pysdmx/io/reader.py +12 -3
  24. pysdmx/io/writer.py +13 -3
  25. pysdmx/io/xml/__ss_aux_reader.py +39 -17
  26. pysdmx/io/xml/__structure_aux_reader.py +221 -33
  27. pysdmx/io/xml/__structure_aux_writer.py +304 -5
  28. pysdmx/io/xml/__tokens.py +12 -0
  29. pysdmx/io/xml/__write_aux.py +9 -0
  30. pysdmx/io/xml/sdmx21/writer/generic.py +2 -2
  31. pysdmx/model/dataflow.py +11 -2
  32. pysdmx/toolkit/pd/_data_utils.py +1 -1
  33. {pysdmx-1.10.1.dist-info → pysdmx-1.12.0.dist-info}/METADATA +7 -1
  34. {pysdmx-1.10.1.dist-info → pysdmx-1.12.0.dist-info}/RECORD +36 -31
  35. {pysdmx-1.10.1.dist-info → pysdmx-1.12.0.dist-info}/WHEEL +1 -1
  36. pysdmx/io/json/sdmxjson2/writer/metadata.py +0 -60
  37. pysdmx/io/json/sdmxjson2/writer/structure.py +0 -61
  38. {pysdmx-1.10.1.dist-info → pysdmx-1.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,5 @@
1
1
  pysdmx/__extras_check.py,sha256=Tmluui2OuJVyJB6a1Jl0PlrRjpsswhtCjAqtRLOSero,2059
2
- pysdmx/__init__.py,sha256=76qTEXwql_RGDSAgomUh23-P8FW79kx6Pcvc8iKZR8s,68
2
+ pysdmx/__init__.py,sha256=LCdSlP0rLXyq15h8hnc9obDN-ntA9c4EgVNKcYeP7IM,68
3
3
  pysdmx/api/__init__.py,sha256=8lRaF6kEO51ehl0fmW_pHLvkN_34TtEhqhr3oKo6E6g,26
4
4
  pysdmx/api/dc/__init__.py,sha256=oPU32X8CRZy4T1to9mO5KMqMwxQsVI424dPqai-I8zI,121
5
5
  pysdmx/api/dc/_api.py,sha256=poy1FYFXnF6maBGy5lpOodf32-7QQjH8PCBNDkuOXxQ,7747
@@ -11,7 +11,7 @@ pysdmx/api/dc/query/_py_parser.py,sha256=_kVUk6Xu5jZdclng1F6eDSZS2-ok_yncI1y1q5l
11
11
  pysdmx/api/dc/query/_sql_parser.py,sha256=vQjhSyt6qA4jAHchkq4XXVhNPtKjKSVLzhoPkUyhJKk,1561
12
12
  pysdmx/api/dc/query/util.py,sha256=9HALmvlgVCckaMTVG7sEFbAw_mBwfbL4K-Pac2KPSYw,915
13
13
  pysdmx/api/fmr/__init__.py,sha256=uXD2dOY2lJSY6CoracIh8c1_7wWiJcsQ5ebIEIbHumk,50532
14
- pysdmx/api/fmr/maintenance.py,sha256=AnR1beyL6nsoDM5LmDLXnRMW5JvhGHXTADf_INSNgUg,5920
14
+ pysdmx/api/fmr/maintenance.py,sha256=_bdPSlSY3AvABxndlwwCKTk6uiFQfUSYhN9EjBuFRUw,6170
15
15
  pysdmx/api/gds/__init__.py,sha256=BBl75wEdcz9zPMfk6kAGHitRW39S774VL9xifMZ_uHs,11560
16
16
  pysdmx/api/qb/__init__.py,sha256=vxdMJFFg4J_KWADrnzj_8KcU0UlwpJPdx0yiW3QJo9Y,1498
17
17
  pysdmx/api/qb/availability.py,sha256=2yPHnTXu_jACNKNhhtXMkxVkfLK1Ewa5ucGAbRxvC5o,10181
@@ -38,23 +38,23 @@ pysdmx/io/csv/sdmx21/__init__.py,sha256=I3_dwi4A4if62_mwEjqbOa-F7mhoIMf0D6szpDf3
38
38
  pysdmx/io/csv/sdmx21/reader/__init__.py,sha256=J1cCkZh3klgZZWjdQ_U1zkfzT_DVzQmdreGZhN33SLs,2866
39
39
  pysdmx/io/csv/sdmx21/writer/__init__.py,sha256=CH8Nm7hqvXyN6XM_D2nJRmbKj6CJV-X1QzSF0WJrs0E,2484
40
40
  pysdmx/io/format.py,sha256=EO-PyYpiU0WswvEGA5UHokladxPezcwBUo1AJTqxp1Q,5250
41
- pysdmx/io/input_processor.py,sha256=P1_jKegrOyV7EaZLjLrq8fX2u1EI7gPBJoKvlBCNkP0,6967
41
+ pysdmx/io/input_processor.py,sha256=OPpnhXy8R2H0EKHvC92J3eWojk4I8dlp4jXA03FvvuA,7212
42
42
  pysdmx/io/json/fusion/messages/__init__.py,sha256=ac2jWfjGGBcfoSutiKy68LzqwNp_clt2RzmJOaYCxL0,2142
43
43
  pysdmx/io/json/fusion/messages/category.py,sha256=2NnYTptQ6nAdeYBIkAysyriTFF6dW8fjb9AvRWtTOao,5606
44
44
  pysdmx/io/json/fusion/messages/code.py,sha256=YayxSKiHa124WTr_lK8HTfXHomh_e0oDZvuydd29XKg,8300
45
45
  pysdmx/io/json/fusion/messages/concept.py,sha256=m4lTyncSIriFXWWupE-zLxUVPx3Xrg56qahzKr4HEag,2824
46
- pysdmx/io/json/fusion/messages/constraint.py,sha256=dPkzhCWN49Y9ReSZPRFTdM6GWc0rU2BZTyFfWsqlX34,615
46
+ pysdmx/io/json/fusion/messages/constraint.py,sha256=pQlirYnZLCD-qqwcqHtAuYaBqU3R-o449nMubyDyC-g,1353
47
47
  pysdmx/io/json/fusion/messages/core.py,sha256=GdzF3TNUGrB0gxuaaSpk9LaYqcdy_M6L2azExZQfM0Q,4843
48
48
  pysdmx/io/json/fusion/messages/dataflow.py,sha256=lsaMPjmA-KiM51I78wrONfNHyvfBSeAll5Sp0jmTezc,2972
49
- pysdmx/io/json/fusion/messages/dsd.py,sha256=hnVOY0GZSuYQFCZd-hcjGd_YEacUue_9S4YjpSJJigM,10341
49
+ pysdmx/io/json/fusion/messages/dsd.py,sha256=67Wym_OLnUERBQGJehu08MdFvH1p3UcUbiz0WZ69zV8,10702
50
50
  pysdmx/io/json/fusion/messages/map.py,sha256=TPsCFuUfk5Jhhe7CNvEoHuFNZFpHhvNiYFWeIEUx-sc,7695
51
51
  pysdmx/io/json/fusion/messages/metadataflow.py,sha256=Js4j8lUF9ZwqL7lJUrfrjk9tmBmRQPt8qxdrfnZ6R5E,1374
52
52
  pysdmx/io/json/fusion/messages/mpa.py,sha256=WvcHn7Pa_UBHxkZbfSzIxc8qeeMfTWThxgCRHuioXFY,1494
53
- pysdmx/io/json/fusion/messages/msd.py,sha256=S7PR8DbY1Vob5UUCTHbSmfpz5kMMyGJvtE0zcF1RqbE,3781
53
+ pysdmx/io/json/fusion/messages/msd.py,sha256=XzQ5JiX0rAswj71a3mCYulhGLtu7GDp_RzL8-kd3t1U,3867
54
54
  pysdmx/io/json/fusion/messages/org.py,sha256=gWIvmvVrj5wXCrwbsJL0B13YM3WjlfIQxrRUc_WAoYs,9538
55
55
  pysdmx/io/json/fusion/messages/pa.py,sha256=6zN8Qxj5bdf5zo2N9TwYlSLyGxokvsELtk1--1cMbxw,1393
56
56
  pysdmx/io/json/fusion/messages/report.py,sha256=ZE62ZmHlCXk3TxRTRWCDCKVMhnN0J5UjMEzrsnD5I3E,1551
57
- pysdmx/io/json/fusion/messages/schema.py,sha256=xBbpLyJNapJpzZA4vAvROmWTSNYymcpggqMZ_NjL444,2603
57
+ pysdmx/io/json/fusion/messages/schema.py,sha256=cdC2OTcuJFqR9GeyCr0OxL-jYjSdN0HKFMp1OkfORCA,3134
58
58
  pysdmx/io/json/fusion/messages/vtl.py,sha256=7VGjDRWzKMO6WT4CnGvGBKinhX06DzrJmDRudnvN4XM,16092
59
59
  pysdmx/io/json/fusion/reader/__init__.py,sha256=4lFrsX0Flhvlopv5FAYZBeQMPtmnMm5HgC-q7Pey0dw,1710
60
60
  pysdmx/io/json/gds/messages/__init__.py,sha256=5LqGtO3GDi2B6HM2eDGCSJCncLS8C4MQ7vd5YBvCRok,885
@@ -70,39 +70,44 @@ pysdmx/io/json/sdmxjson2/messages/category.py,sha256=L51-XTUxzELNCfdhLPKaOPoGss2
70
70
  pysdmx/io/json/sdmxjson2/messages/code.py,sha256=gEdBPOmlO_7_-lHfE7k8RVY95ee7cwJH7eY8ibh5JyA,18205
71
71
  pysdmx/io/json/sdmxjson2/messages/concept.py,sha256=x7BoG6AaziZGNjxeypwy_lsFTmdHs-0MPUpqPsTBQIA,5496
72
72
  pysdmx/io/json/sdmxjson2/messages/constraint.py,sha256=TCg-Z6ZkZSzlhjvaZebKk1wL_CPhmJzyKjEkE4FPkAc,9055
73
- pysdmx/io/json/sdmxjson2/messages/core.py,sha256=qF0fscWY1yRxmN-4s2UweEWqbDMSioaUPaxlYEo8ouY,10137
73
+ pysdmx/io/json/sdmxjson2/messages/core.py,sha256=dOVa5ibFuhNqmw7e2yVeYMMC8DEjk6jK5T40ev9S-0I,10394
74
74
  pysdmx/io/json/sdmxjson2/messages/dataflow.py,sha256=wjeq9yexTa012AtGdZsZflp3WQ6fP-3kas-gxADTFeQ,6256
75
- pysdmx/io/json/sdmxjson2/messages/dsd.py,sha256=ZLFISJYtpP4cPQwcIjMkEGVPBE4Yy6cCKvwGw0xjFh4,20431
75
+ pysdmx/io/json/sdmxjson2/messages/dsd.py,sha256=_dqP-ZwKNM85xb77OMLY_wiGZxMwHvl4d-c1QECCP9Y,20415
76
76
  pysdmx/io/json/sdmxjson2/messages/map.py,sha256=ZB7XPX6nUcu2MMHAsgwAR0nxlbEQF7YasplhlS5K9EI,16774
77
77
  pysdmx/io/json/sdmxjson2/messages/metadataflow.py,sha256=1hKCyzTEAvB_MOgmtjBObC9RVNSge7Sick6nQMwl17o,2994
78
78
  pysdmx/io/json/sdmxjson2/messages/mpa.py,sha256=ryoQCvOvd2j6gPdGOEML4bc-NXUSetuKNOfmd9Ogn2s,3050
79
- pysdmx/io/json/sdmxjson2/messages/msd.py,sha256=GtJbAgGFgsNvi0P4zdslh_EOdLv-UjFBM9H9TLpwIlw,8484
79
+ pysdmx/io/json/sdmxjson2/messages/msd.py,sha256=cYQqWOex5LVYE-8ASsyIwI_Y0jCuT9IPG_evG3CMnHs,8465
80
80
  pysdmx/io/json/sdmxjson2/messages/pa.py,sha256=VoaPBgcWGwWU7h5IaVa5wNWncOoktWihSXjcP4vEb00,2780
81
81
  pysdmx/io/json/sdmxjson2/messages/provider.py,sha256=htAwdDzVR3qeyExhmjpvg8W0X4lWqRh2Bvd5H8wsOTY,8197
82
- pysdmx/io/json/sdmxjson2/messages/report.py,sha256=thcZZUuoiJ6OJ9P33EOTN3PIHFKxdQUMapI7HmSoB4A,6571
83
- pysdmx/io/json/sdmxjson2/messages/schema.py,sha256=JwFYjgvhK_1NN5KQIUYNb0ul4ywQhDQ28ZQBGnsX5X4,2862
84
- pysdmx/io/json/sdmxjson2/messages/structure.py,sha256=c0dyTJK49UpGvL1iLFaFLYFkT89kzvXwk65qd_j-Y1U,12738
82
+ pysdmx/io/json/sdmxjson2/messages/report.py,sha256=jr4HZunfnQicG2AFi15AGX_v031jNb3d6PiQgc8TPgY,6672
83
+ pysdmx/io/json/sdmxjson2/messages/schema.py,sha256=TfsYPKyaQRz-nd6wiSwtL2_VrLJFJQ4rzZmFeU-bH3E,3960
84
+ pysdmx/io/json/sdmxjson2/messages/structure.py,sha256=GCpQboHEpDyfCmXVJGbCyKpIaLCbOXYDxj6WXnvv9pw,12851
85
85
  pysdmx/io/json/sdmxjson2/messages/vtl.py,sha256=C-JQY1_W8SrJd2lLdUGCmQO9Br1pdqdT8WmB1K4e_yY,35284
86
86
  pysdmx/io/json/sdmxjson2/reader/__init__.py,sha256=RbNnZSrGQa4OE0HBWJau9tPFSQbDklcKZaBWOzxEw4I,1629
87
87
  pysdmx/io/json/sdmxjson2/reader/doc_validation.py,sha256=Li0N5UmTKJy_FWT5vfwt7DEtp8xiYaXccDRBna_Q0Jw,3822
88
- pysdmx/io/json/sdmxjson2/reader/metadata.py,sha256=FT9CEWjrVfUK4vTEqs-f2ZO6jWeRRkEHCjsHMNgKQp0,1230
89
- pysdmx/io/json/sdmxjson2/reader/structure.py,sha256=PKHvH_lY2XJtKkg5rGbGSHyYu_raGLrBuaEy8BKr6U0,1209
88
+ pysdmx/io/json/sdmxjson2/reader/metadata.py,sha256=sktlmqyXnGhoDTypSDeJU97Evfb9HB0II4-LPnvfMrk,1248
89
+ pysdmx/io/json/sdmxjson2/reader/structure.py,sha256=6WtSmwx9KRSLX9Ovb1rFoIpghhy72o-1uZ9qN1Fo0zw,1236
90
90
  pysdmx/io/json/sdmxjson2/writer/__init__.py,sha256=DZGkas1ghei4p6SZsIQI1LPToS-d8F1Nx75MC8reT7g,270
91
- pysdmx/io/json/sdmxjson2/writer/metadata.py,sha256=qse5foElBdTWbxIc9rIH1B4DfOBMeLy7qocp3Y4cV7g,2043
92
- pysdmx/io/json/sdmxjson2/writer/structure.py,sha256=kqINWWSFjowIKIwsD0Kvb29KYdW5VDT9fg9d1ccjQBY,2102
91
+ pysdmx/io/json/sdmxjson2/writer/_helper.py,sha256=sXZw2exVyHBUpdVf4NjieTrexXfA27NcxUo594h6ArE,4214
92
+ pysdmx/io/json/sdmxjson2/writer/v2_0/__init__.py,sha256=7PBjEmFonZtbhURmon4UQufFoR_dpZqLILXnq6oPIoo,58
93
+ pysdmx/io/json/sdmxjson2/writer/v2_0/metadata.py,sha256=AU-VstrSHpTrIQSx3e2JmeIRuC-CQn79OQODllz6BB8,1212
94
+ pysdmx/io/json/sdmxjson2/writer/v2_0/structure.py,sha256=jiJ9ww7zTZRaGzZTZVY2-0Tzj9JdSeXkI2fggqfqKRc,1245
95
+ pysdmx/io/json/sdmxjson2/writer/v2_1/__init__.py,sha256=-CwxbfR9kgwXYU_SMrmkkf0jgFPhcHTdG5dwjFhwjfk,58
96
+ pysdmx/io/json/sdmxjson2/writer/v2_1/metadata.py,sha256=9PE3yPpyD1pfF_8-A5VmakzC00XRC-BNEyZpZUIIJI8,1196
97
+ pysdmx/io/json/sdmxjson2/writer/v2_1/structure.py,sha256=s0SULtWmNUckly6cKPI0wGzElmVvgAEK6b32Es2Q0Rw,1243
93
98
  pysdmx/io/pd.py,sha256=1C5UnAT25EADOpNsRBooEdWNaJEGdmcwh6_R9O5MOrc,464
94
- pysdmx/io/reader.py,sha256=VmqpmQAvDhTHKjFcUBC_fpmnY8VgC9ffS8JLq-c3D5o,11230
99
+ pysdmx/io/reader.py,sha256=sceCnfJKdUiwNXnIkCKydj5Fcmc1DDnkzUlaz2DNOrU,11403
95
100
  pysdmx/io/serde.py,sha256=xTd22JEaefhCpVcUqVthf4gtDQT1KeiDZ-9w52o2zQk,1594
96
- pysdmx/io/writer.py,sha256=1UVJvZm3eD2wQxZ-PruQdhQMu3l2egju-cxOvZBrH-o,5833
101
+ pysdmx/io/writer.py,sha256=UEwRe8xVCKV_y9nu7amSVQzQss5x55EBJsH2LI-dsAI,6128
97
102
  pysdmx/io/xml/__allowed_lxml_errors.py,sha256=PdIK2i6JwwGRh1Ogc5JA0hRySO7QXJKN-DI8EYtdjA0,225
98
103
  pysdmx/io/xml/__data_aux.py,sha256=oLTfk49FuoF0LjMrV5o55PN_5wWPHZTv49aDBdbflYc,4331
99
104
  pysdmx/io/xml/__init__.py,sha256=tcUsSEiM3nBA7lDbZPwGZ7Vu_K9gQd8oliASUMTGjFE,105
100
105
  pysdmx/io/xml/__parse_xml.py,sha256=4zZKGlvrNAccILH-mlQzZFV2HF15wIUGDXttVG3SvNM,2975
101
- pysdmx/io/xml/__ss_aux_reader.py,sha256=6mumQYcDdF_vrX65vSodE4I1b7upKbP6yNNSM2N6pUs,2853
102
- pysdmx/io/xml/__structure_aux_reader.py,sha256=50UPOCk2XnCU4J1hQNAXiGL2n8QPXdf4zPtPB0DKWPQ,42782
103
- pysdmx/io/xml/__structure_aux_writer.py,sha256=0i08hvFw2TfRElaGAeTwfsOaOpw8XWBlZ_zWdxmLPkM,45612
104
- pysdmx/io/xml/__tokens.py,sha256=M0x-tgoh6_pzL_BP-MArCu3w0NO-AUS6bR-W6BIEJG8,6891
105
- pysdmx/io/xml/__write_aux.py,sha256=c3HgDMey8nBXyeT_yU8PWdk25bgYyX49R21fLv8CgZc,15534
106
+ pysdmx/io/xml/__ss_aux_reader.py,sha256=_aJO-uWh60SNaOxB8mE8SBWy0c5_GPBNtr9lro_YlEA,3702
107
+ pysdmx/io/xml/__structure_aux_reader.py,sha256=IppBAE7oWeO0FbqdwAb2t6xXmVbZj7PaC2vHIcdWFNE,49122
108
+ pysdmx/io/xml/__structure_aux_writer.py,sha256=smDO5X5PwTXD48pgFBA_rYGvE-yMZb1YVR1WNyXE-EM,55176
109
+ pysdmx/io/xml/__tokens.py,sha256=mTunFE49N4TigxjPiDoyYdbN4Yk_HONZYFz-fRzDknk,7258
110
+ pysdmx/io/xml/__write_aux.py,sha256=Qi_f5K8a0mX4F4IMx3ZQ8J18NPj_2VhdiccjOAtvhQo,15896
106
111
  pysdmx/io/xml/__write_data_aux.py,sha256=mnJpooA4koqGbKhF-6eonT3drQ-qCuwwP-lfZLHKqVQ,3403
107
112
  pysdmx/io/xml/__write_structure_specific_aux.py,sha256=reRDVw4Xwag0ODyMzm9uOk9WJ_e1ELxAPYHSMUUDJBQ,8919
108
113
  pysdmx/io/xml/config.py,sha256=R24cczVkzkhjVLXpv-qfEm88W3_QTqVt2Qofi8IvJ5Y,93
@@ -117,7 +122,7 @@ pysdmx/io/xml/sdmx21/reader/structure_specific.py,sha256=S3-gLmaBFjBRIr25qQtlrao
117
122
  pysdmx/io/xml/sdmx21/reader/submission.py,sha256=8daiBW-sIVGaB6lYwHqJNkLI7IixMSydCK-0ZO8ri4I,1711
118
123
  pysdmx/io/xml/sdmx21/writer/__init__.py,sha256=QQGFAss26njCC4eKYxhBcI9LYm5NHuJaAJGKCrIrL80,31
119
124
  pysdmx/io/xml/sdmx21/writer/error.py,sha256=0wkX7K_n2oZNkOKg_zpl9Id82qP72Lqof-T-ZLGoZ1M,353
120
- pysdmx/io/xml/sdmx21/writer/generic.py,sha256=8_kUMMUiIFVdKMyhpR2LKDyfiinBohO_aL_6GZpOInY,15786
125
+ pysdmx/io/xml/sdmx21/writer/generic.py,sha256=kiTQ3HuO51xxQGrQ6PxpKAYGfoYu_r_oxfOPQHPX2vU,15824
121
126
  pysdmx/io/xml/sdmx21/writer/structure.py,sha256=S3qoNgXxrakn2V4NLdL5U5mAA16XisI0PpJDuxqalFE,2084
122
127
  pysdmx/io/xml/sdmx21/writer/structure_specific.py,sha256=iXc1J-RzoKyRznvgGgdTSeUfyqZLouI8CtSq2YhGBWI,2877
123
128
  pysdmx/io/xml/sdmx30/__init__.py,sha256=8BScJFEgLy8DoUreu2RBUtxjGjKyClkKBI_Qtarbk-Y,38
@@ -141,7 +146,7 @@ pysdmx/model/category.py,sha256=ksYIOGPHgZI619RhmRXZUXHP_juY9im40tWzR2yuMEc,6796
141
146
  pysdmx/model/code.py,sha256=Wu6rEXeZf_XA0aBrDXgN-3yvySAHH7SAjrWliFlmC24,12799
142
147
  pysdmx/model/concept.py,sha256=mQfqJdtWc10WdTKX_Mw7Znw65cN3QO-kCar9MWYeWO4,9645
143
148
  pysdmx/model/constraint.py,sha256=MwI_GLKzwkuo0BzAsgcnDeB-b7bq8qqwHNte5JjCEFA,1960
144
- pysdmx/model/dataflow.py,sha256=IyVBWIKSkl6Qm5R2a6n_uPveUPsIpaYUMc_4hcwJ4Uw,24196
149
+ pysdmx/model/dataflow.py,sha256=FjXuMfAme1JyO1WCFV_yw0WcYqwXMB7kG0mOUwh04q8,24670
145
150
  pysdmx/model/dataset.py,sha256=Lbr7tYonGHD3NZUD-M9hK2puaEAluOVPG2DbkOohzMM,4861
146
151
  pysdmx/model/gds.py,sha256=QrnmI8Hn--C95gGXCeUeWwhn-Ur7DuT08Cg7oPJIEVI,4976
147
152
  pysdmx/model/map.py,sha256=9a3hl6efq_5kAYuJWkepoQOkao8Eqk17N69JGyRfxsk,17506
@@ -153,7 +158,7 @@ pysdmx/model/vtl.py,sha256=k7WIb89876xKlf7k0R9sgZ1VVlRrIkbV7FzvMFZn8e0,6985
153
158
  pysdmx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
159
  pysdmx/toolkit/__init__.py,sha256=yBRw4FXQH_RUJgF6vwZscNwCVBt-FMwslJEfDKa7eXo,26
155
160
  pysdmx/toolkit/pd/__init__.py,sha256=3JoCZHamJR4mZfLt9GmaznLlG_YilmY0hAhuW5COQC8,3138
156
- pysdmx/toolkit/pd/_data_utils.py,sha256=fzXl_a1M8NI7HHI23tRmLlS4PBZ9N4Tgtqh-zxg19qk,3265
161
+ pysdmx/toolkit/pd/_data_utils.py,sha256=S-u17kdYoWlZRLHFvCBKIO489cGBWcFcdCVjEhqJWuA,3311
157
162
  pysdmx/toolkit/vtl/__init__.py,sha256=jYWScnAomHlkvTtl07ur82UEqALCveiAEmMbqdWhT1A,388
158
163
  pysdmx/toolkit/vtl/_validations.py,sha256=k0le8fDUOGNl97P-QbNglrNyr5fCh5dLPMiTk1yu1jw,5590
159
164
  pysdmx/toolkit/vtl/convert.py,sha256=FNToVTG4Zu9n7h_Fre-LEGihx8RMGSJb7G6-FFyPg8Y,11355
@@ -163,7 +168,7 @@ pysdmx/util/__init__.py,sha256=m_XWRAmVJ7F6ai4Ckrj_YuPbhg3cJZAXeZrEThrL88k,3997
163
168
  pysdmx/util/_date_pattern_map.py,sha256=IS1qONwVHbTBNIFCT0Rqbijj2a9mYvs7onXSK6GeQAQ,1620
164
169
  pysdmx/util/_model_utils.py,sha256=nQ1yWBt-tZYDios9xvRvJ7tHq6A8_RoGdY1wi7WGz2w,3793
165
170
  pysdmx/util/_net_utils.py,sha256=nOTz_x3FgFrwKh42_J70IqYXz9duQkMFJWtejZXcLHs,1326
166
- pysdmx-1.10.1.dist-info/METADATA,sha256=tXCxkMOnWoEJWTBRH4ZvzO1k20lm9cxDIneSSfQ8pzE,4849
167
- pysdmx-1.10.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
168
- pysdmx-1.10.1.dist-info/licenses/LICENSE,sha256=3XTNDPtv2RxDUNkQzn9MIWit2u7_Ob5daMLEq-4pBJs,649
169
- pysdmx-1.10.1.dist-info/RECORD,,
171
+ pysdmx-1.12.0.dist-info/METADATA,sha256=Lh2s5ZlVZY0MY1taf1MeFSTlqF1mJIiWEYX1qqRCLps,5364
172
+ pysdmx-1.12.0.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
173
+ pysdmx-1.12.0.dist-info/licenses/LICENSE,sha256=3XTNDPtv2RxDUNkQzn9MIWit2u7_Ob5daMLEq-4pBJs,649
174
+ pysdmx-1.12.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.2.1
2
+ Generator: poetry-core 2.3.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,60 +0,0 @@
1
- """Writer interface for SDMX-JSON 2.0.0 Reference Metadata messages."""
2
-
3
- from pathlib import Path
4
- from typing import Optional, Sequence, Union
5
-
6
- import msgspec
7
-
8
- from pysdmx.io.json.sdmxjson2.messages import JsonMetadataMessage
9
- from pysdmx.model import MetadataReport, encoders
10
- from pysdmx.model.message import Header, MetadataMessage
11
-
12
-
13
- def write(
14
- reports: Sequence[MetadataReport],
15
- output_path: Optional[Union[str, Path]] = None,
16
- prettyprint: bool = True,
17
- header: Optional[Header] = None,
18
- ) -> Optional[str]:
19
- """Write metadata reports in SDMX-JSON 2.0.0.
20
-
21
- Args:
22
- reports: The reference metadata reports to be serialized.
23
- output_path: The path to save the JSON file. If None or empty, the
24
- serialized content is returned as a string instead.
25
- prettyprint: Whether to format the JSON output with indentation (True)
26
- or output compact JSON without extra whitespace (False).
27
- header: The header to be used in the SDMX-JSON message
28
- (will be generated if no header is supplied).
29
-
30
- Returns:
31
- The JSON string if output_path is None or empty, None otherwise.
32
- """
33
- if not header:
34
- header = Header()
35
- sm = MetadataMessage(header, reports)
36
- jsm = JsonMetadataMessage.from_model(sm)
37
-
38
- encoder = msgspec.json.Encoder(enc_hook=encoders)
39
- serialized_data = encoder.encode(jsm)
40
-
41
- # Apply pretty-printing if requested
42
- if prettyprint:
43
- serialized_data = msgspec.json.format(serialized_data, indent=4)
44
-
45
- # If output_path is provided, write to file
46
- if output_path:
47
- # Convert to Path object if string
48
- if isinstance(output_path, str):
49
- output_path = Path(output_path)
50
-
51
- # Create parent directories if they don't exist
52
- output_path.parent.mkdir(parents=True, exist_ok=True)
53
-
54
- # Write to file
55
- with open(output_path, "wb") as f:
56
- f.write(serialized_data)
57
- return None
58
- else:
59
- # Return as string
60
- return serialized_data.decode("utf-8")
@@ -1,61 +0,0 @@
1
- """Writer interface for SDMX-JSON 2.0.0 Structure messages."""
2
-
3
- from pathlib import Path
4
- from typing import Optional, Sequence, Union
5
-
6
- import msgspec
7
-
8
- from pysdmx.io.json.sdmxjson2.messages import JsonStructureMessage
9
- from pysdmx.model import encoders
10
- from pysdmx.model.__base import MaintainableArtefact
11
- from pysdmx.model.message import Header, StructureMessage
12
-
13
-
14
- def write(
15
- structures: Sequence[MaintainableArtefact],
16
- output_path: Optional[Union[str, Path]] = None,
17
- prettyprint: bool = True,
18
- header: Optional[Header] = None,
19
- ) -> Optional[str]:
20
- """Write maintainable SDMX artefacts in SDMX-JSON 2.0.0.
21
-
22
- Args:
23
- structures: The maintainable SDMX artefacts to be serialized.
24
- output_path: The path to save the JSON file. If None or empty, the
25
- serialized content is returned as a string instead.
26
- prettyprint: Whether to format the JSON output with indentation (True)
27
- or output compact JSON without extra whitespace (False).
28
- header: The header to be used in the SDMX-JSON message
29
- (will be generated if no header is supplied).
30
-
31
- Returns:
32
- The JSON string if output_path is None or empty, None otherwise.
33
- """
34
- if not header:
35
- header = Header()
36
- sm = StructureMessage(header, structures)
37
- jsm = JsonStructureMessage.from_model(sm)
38
-
39
- encoder = msgspec.json.Encoder(enc_hook=encoders)
40
- serialized_data = encoder.encode(jsm)
41
-
42
- # Apply pretty-printing if requested
43
- if prettyprint:
44
- serialized_data = msgspec.json.format(serialized_data, indent=4)
45
-
46
- # If output_path is provided, write to file
47
- if output_path:
48
- # Convert to Path object if string
49
- if isinstance(output_path, str):
50
- output_path = Path(output_path)
51
-
52
- # Create parent directories if they don't exist
53
- output_path.parent.mkdir(parents=True, exist_ok=True)
54
-
55
- # Write to file
56
- with open(output_path, "wb") as f:
57
- f.write(serialized_data)
58
- return None
59
- else:
60
- # Return as string
61
- return serialized_data.decode("utf-8")