pysdmx 1.8.1__py3-none-any.whl → 1.10.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 (42) hide show
  1. pysdmx/__extras_check.py +15 -1
  2. pysdmx/__init__.py +1 -1
  3. pysdmx/api/fmr/__init__.py +3 -2
  4. pysdmx/io/input_processor.py +9 -6
  5. pysdmx/io/json/fusion/messages/category.py +69 -41
  6. pysdmx/io/json/sdmxjson2/messages/__init__.py +4 -0
  7. pysdmx/io/json/sdmxjson2/messages/category.py +76 -43
  8. pysdmx/io/json/sdmxjson2/messages/code.py +16 -6
  9. pysdmx/io/json/sdmxjson2/messages/constraint.py +235 -16
  10. pysdmx/io/json/sdmxjson2/messages/core.py +2 -1
  11. pysdmx/io/json/sdmxjson2/messages/dsd.py +35 -7
  12. pysdmx/io/json/sdmxjson2/messages/map.py +5 -4
  13. pysdmx/io/json/sdmxjson2/messages/metadataflow.py +1 -0
  14. pysdmx/io/json/sdmxjson2/messages/msd.py +18 -10
  15. pysdmx/io/json/sdmxjson2/messages/schema.py +2 -2
  16. pysdmx/io/json/sdmxjson2/messages/structure.py +81 -44
  17. pysdmx/io/json/sdmxjson2/messages/vtl.py +13 -9
  18. pysdmx/io/json/sdmxjson2/reader/doc_validation.py +112 -0
  19. pysdmx/io/json/sdmxjson2/reader/metadata.py +8 -1
  20. pysdmx/io/json/sdmxjson2/reader/structure.py +9 -2
  21. pysdmx/io/reader.py +18 -4
  22. pysdmx/io/xml/__data_aux.py +9 -4
  23. pysdmx/io/xml/__parse_xml.py +2 -0
  24. pysdmx/io/xml/__structure_aux_reader.py +70 -0
  25. pysdmx/io/xml/__structure_aux_writer.py +63 -9
  26. pysdmx/io/xml/__tokens.py +3 -0
  27. pysdmx/io/xml/__write_aux.py +35 -30
  28. pysdmx/io/xml/header.py +48 -35
  29. pysdmx/model/__base.py +47 -2
  30. pysdmx/model/__init__.py +18 -0
  31. pysdmx/model/category.py +23 -1
  32. pysdmx/model/constraint.py +69 -0
  33. pysdmx/model/message.py +97 -72
  34. pysdmx/toolkit/vtl/__init__.py +10 -1
  35. pysdmx/toolkit/vtl/_validations.py +8 -12
  36. pysdmx/toolkit/vtl/convert.py +333 -0
  37. pysdmx/toolkit/vtl/script_generation.py +1 -1
  38. pysdmx/util/_model_utils.py +40 -3
  39. {pysdmx-1.8.1.dist-info → pysdmx-1.10.0.dist-info}/METADATA +6 -3
  40. {pysdmx-1.8.1.dist-info → pysdmx-1.10.0.dist-info}/RECORD +42 -39
  41. {pysdmx-1.8.1.dist-info → pysdmx-1.10.0.dist-info}/WHEEL +0 -0
  42. {pysdmx-1.8.1.dist-info → pysdmx-1.10.0.dist-info}/licenses/LICENSE +0 -0
@@ -5,7 +5,7 @@ from pysdmx.model.message import Message
5
5
  from pysdmx.util import parse_urn
6
6
 
7
7
 
8
- def schema_generator(message: Message, dataset_ref: Reference) -> Schema:
8
+ def schema_generator(message: Message, dataset_ref: Reference) -> Schema: # noqa: C901
9
9
  """Generates a Schema by resolving the short_urn in the message."""
10
10
  context = dataset_ref.sdmx_type.lower()
11
11
  if context == "datastructure":
@@ -47,8 +47,45 @@ def schema_generator(message: Message, dataset_ref: Reference) -> Schema:
47
47
  artefacts=dsd.to_schema().artefacts,
48
48
  )
49
49
  elif context == "provisionagreement":
50
- raise NotImplementedError(
51
- "ProvisionAgreement schema generation is not supported yet."
50
+ try:
51
+ prov_agree = message.get_provision_agreement(str(dataset_ref))
52
+ except NotFound:
53
+ raise Invalid(
54
+ f"Missing Provision Agreement {dataset_ref} "
55
+ f"in structures message.",
56
+ ) from None
57
+ if prov_agree.dataflow is None:
58
+ raise Invalid(
59
+ f"Provision Agreement {dataset_ref} does not have a "
60
+ f"Dataflow defined.",
61
+ )
62
+ dfw_ref = parse_urn(prov_agree.dataflow)
63
+ try:
64
+ dataflow = message.get_dataflow(str(dfw_ref))
65
+ except NotFound:
66
+ raise Invalid(
67
+ f"Missing Dataflow in {dataset_ref} structures message.",
68
+ ) from None
69
+ if dataflow.structure is None:
70
+ raise Invalid(
71
+ f"Dataflow {dataset_ref} does not have a structure defined.",
72
+ )
73
+ dsd_ref = parse_urn(dataflow.structure) # type: ignore[arg-type]
74
+ try:
75
+ dsd = message.get_data_structure_definition(str(dsd_ref))
76
+ except NotFound:
77
+ raise Invalid(
78
+ f"Not found referenced DataStructure {dsd_ref}"
79
+ f" from Provision Agreement {dataset_ref}.",
80
+ ) from None
81
+ return Schema(
82
+ context=context, # type: ignore[arg-type]
83
+ id=dataset_ref.id,
84
+ version=dataset_ref.version,
85
+ agency=dataset_ref.agency,
86
+ groups=dsd.groups,
87
+ components=dsd.components,
88
+ artefacts=dsd.to_schema().artefacts,
52
89
  )
53
90
  else:
54
91
  raise Invalid(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysdmx
3
- Version: 1.8.1
3
+ Version: 1.10.0
4
4
  Summary: Your opinionated Python SDMX library
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -16,9 +16,11 @@ Classifier: Typing :: Typed
16
16
  Provides-Extra: all
17
17
  Provides-Extra: data
18
18
  Provides-Extra: dc
19
+ Provides-Extra: json
19
20
  Provides-Extra: vtl
20
21
  Provides-Extra: xml
21
22
  Requires-Dist: httpx[http2] (>=0)
23
+ Requires-Dist: jsonschema (>=4.10) ; extra == "json"
22
24
  Requires-Dist: lxml (>=5.2) ; extra == "all"
23
25
  Requires-Dist: lxml (>=5.2) ; extra == "xml"
24
26
  Requires-Dist: msgspec (>=0)
@@ -28,9 +30,10 @@ Requires-Dist: parsy (>=2.1)
28
30
  Requires-Dist: python-dateutil (>=2.8.2) ; extra == "all"
29
31
  Requires-Dist: python-dateutil (>=2.8.2) ; extra == "dc"
30
32
  Requires-Dist: sdmxschemas (>=1.0.0) ; extra == "all"
33
+ Requires-Dist: sdmxschemas (>=1.0.0) ; extra == "json"
31
34
  Requires-Dist: sdmxschemas (>=1.0.0) ; extra == "xml"
32
- Requires-Dist: vtlengine (>=1.1,<2.0) ; extra == "all"
33
- Requires-Dist: vtlengine (>=1.1,<2.0) ; extra == "vtl"
35
+ Requires-Dist: vtlengine (>=1.2,<2.0) ; extra == "all"
36
+ Requires-Dist: vtlengine (>=1.2,<2.0) ; extra == "vtl"
34
37
  Requires-Dist: xmltodict (>=0.13) ; extra == "all"
35
38
  Requires-Dist: xmltodict (>=0.13) ; extra == "xml"
36
39
  Project-URL: Bug Tracker, https://bis-med-it.github.io/pysdmx/issues
@@ -1,5 +1,5 @@
1
- pysdmx/__extras_check.py,sha256=I39OaM1lAPBnyzHVJ7kA_ZA_tMeDAQLr6ZKqEQ9MK1Q,1659
2
- pysdmx/__init__.py,sha256=ewDMAm-SxznkiNhpzGsqtt8Up4ZirPcPQ4RDZLupcsE,67
1
+ pysdmx/__extras_check.py,sha256=Tmluui2OuJVyJB6a1Jl0PlrRjpsswhtCjAqtRLOSero,2059
2
+ pysdmx/__init__.py,sha256=F-AyIn3b-eDiTeXDb_Le-GaNoBkVinHAlLjk8AfY1SE,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
@@ -10,7 +10,7 @@ pysdmx/api/dc/query/_parsing_util.py,sha256=pUc5z6sijGmJZsLilAxiPsCSRIO7l2iznzL3
10
10
  pysdmx/api/dc/query/_py_parser.py,sha256=_kVUk6Xu5jZdclng1F6eDSZS2-ok_yncI1y1q5lYpBU,1502
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
- pysdmx/api/fmr/__init__.py,sha256=kLvtCWh5HXNg4uvVFVHtrJ-HJ6c2iM4fVNDDtydSSBI,50432
13
+ pysdmx/api/fmr/__init__.py,sha256=-0v6VBGt49k7-TDUMPfu7v6RHn6br10BUiMPneQjQjM,50473
14
14
  pysdmx/api/fmr/maintenance.py,sha256=AnR1beyL6nsoDM5LmDLXnRMW5JvhGHXTADf_INSNgUg,5920
15
15
  pysdmx/api/gds/__init__.py,sha256=BBl75wEdcz9zPMfk6kAGHitRW39S774VL9xifMZ_uHs,11560
16
16
  pysdmx/api/qb/__init__.py,sha256=vxdMJFFg4J_KWADrnzj_8KcU0UlwpJPdx0yiW3QJo9Y,1498
@@ -38,9 +38,9 @@ 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=rj2GzDs3xVQRzikzWonPWJGEa4_mxUPgCqHQ50JI5xY,6917
41
+ pysdmx/io/input_processor.py,sha256=P1_jKegrOyV7EaZLjLrq8fX2u1EI7gPBJoKvlBCNkP0,6967
42
42
  pysdmx/io/json/fusion/messages/__init__.py,sha256=ac2jWfjGGBcfoSutiKy68LzqwNp_clt2RzmJOaYCxL0,2142
43
- pysdmx/io/json/fusion/messages/category.py,sha256=E9jrzXenEpqDNUhT1JJLYxty37PSGegRtx45mB3-COg,4589
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
46
  pysdmx/io/json/fusion/messages/constraint.py,sha256=dPkzhCWN49Y9ReSZPRFTdM6GWc0rU2BZTyFfWsqlX34,615
@@ -64,49 +64,50 @@ pysdmx/io/json/gds/messages/sdmx_api.py,sha256=RIjNQr6ZZXCFGRBpGPKoLaxD9UilVDNyH
64
64
  pysdmx/io/json/gds/messages/services.py,sha256=OUFmYK4XkNMoaw70n4QabyxzdRDh-0XeYxBJtVezxMs,1259
65
65
  pysdmx/io/json/gds/messages/urn_resolver.py,sha256=w_wRRAwjaBw_yooSda1MXcD_aN63FdpFE7WFvcjHSeQ,1209
66
66
  pysdmx/io/json/gds/reader/__init__.py,sha256=cXQvjSzRe4lTsGmru6qMYE_HU2DEccJSYKsQ5ayIpxw,373
67
- pysdmx/io/json/sdmxjson2/messages/__init__.py,sha256=qdvbmT8majCYQw_CPjP-Mqb4BgllFv-qf1T_VtzlCPg,2435
67
+ pysdmx/io/json/sdmxjson2/messages/__init__.py,sha256=DXxKzESV-PD0CEQDmvFS3_xxDvYeY6XUWbWS-nw8BqQ,2560
68
68
  pysdmx/io/json/sdmxjson2/messages/agency.py,sha256=d9t_2HrcZcqu_Y-EchShWDRF5yJQn86urfcFl5qvWAc,3720
69
- pysdmx/io/json/sdmxjson2/messages/category.py,sha256=k61oDSLNKl0G_Mov2AmC4ff1efCPsNfyNEbz0iajkpI,7656
70
- pysdmx/io/json/sdmxjson2/messages/code.py,sha256=t2MMvx2nQzlu4l8MMAPDEq15w5UIjHGgaJI2HoFPdus,17908
69
+ pysdmx/io/json/sdmxjson2/messages/category.py,sha256=L51-XTUxzELNCfdhLPKaOPoGss2tndd6Xs1nMsWJPiA,8804
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
- pysdmx/io/json/sdmxjson2/messages/constraint.py,sha256=6pONMHr7IT8O026Xnv6AjIMVmoS29ivNiOMPr1OWQZQ,1736
73
- pysdmx/io/json/sdmxjson2/messages/core.py,sha256=Cb6U1J13KCXnGJ2P8xbThTg9GCdzhkIK-cA8EHbY6Js,10077
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
74
74
  pysdmx/io/json/sdmxjson2/messages/dataflow.py,sha256=wjeq9yexTa012AtGdZsZflp3WQ6fP-3kas-gxADTFeQ,6256
75
- pysdmx/io/json/sdmxjson2/messages/dsd.py,sha256=8-Q5ADEk0cSKEtXECBqOkzW4yN9dhRmmiVFf8zdAOUE,19025
76
- pysdmx/io/json/sdmxjson2/messages/map.py,sha256=-hhUyPxIWKoIxij0qbuoFDsZMqmtMfclCMUme4c9SS0,16767
77
- pysdmx/io/json/sdmxjson2/messages/metadataflow.py,sha256=37VsdrDpXWKkRczPjxozygrmZAiWxyZbBwDUeg03DDk,2936
75
+ pysdmx/io/json/sdmxjson2/messages/dsd.py,sha256=CMnFZ97oXEJEIO-OnX-uZkSpPN-f5E6jbJo_q8WrYHE,19854
76
+ pysdmx/io/json/sdmxjson2/messages/map.py,sha256=ZB7XPX6nUcu2MMHAsgwAR0nxlbEQF7YasplhlS5K9EI,16774
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=R2onHmPfG0q1NAOLqc36cbKihIaB1ntGysN40df28VY,8225
79
+ pysdmx/io/json/sdmxjson2/messages/msd.py,sha256=GtJbAgGFgsNvi0P4zdslh_EOdLv-UjFBM9H9TLpwIlw,8484
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
82
  pysdmx/io/json/sdmxjson2/messages/report.py,sha256=thcZZUuoiJ6OJ9P33EOTN3PIHFKxdQUMapI7HmSoB4A,6571
83
- pysdmx/io/json/sdmxjson2/messages/schema.py,sha256=Ejs8roep6bSL8Eyu7j18E6IiHXWJ3qSybnnRYNyio-E,2868
84
- pysdmx/io/json/sdmxjson2/messages/structure.py,sha256=puqKLHX37MFhlB0ZxUhaRCUhEXfYPsVVMvHBjxhP4WA,11536
85
- pysdmx/io/json/sdmxjson2/messages/vtl.py,sha256=xCErG_ojn_z1-KrFBInatY2q83lEyWUUB0g-QK-auzk,35168
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
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
- pysdmx/io/json/sdmxjson2/reader/metadata.py,sha256=fIuJL0y71leopBjqy8NqvzRzf9FeDBBzzh_VnzMGtFo,911
88
- pysdmx/io/json/sdmxjson2/reader/structure.py,sha256=G2F23BR3BYfc_9thvDbRQHrmpxlK01mnu1myDpOohN0,889
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
89
90
  pysdmx/io/json/sdmxjson2/writer/__init__.py,sha256=DZGkas1ghei4p6SZsIQI1LPToS-d8F1Nx75MC8reT7g,270
90
91
  pysdmx/io/json/sdmxjson2/writer/metadata.py,sha256=qse5foElBdTWbxIc9rIH1B4DfOBMeLy7qocp3Y4cV7g,2043
91
92
  pysdmx/io/json/sdmxjson2/writer/structure.py,sha256=kqINWWSFjowIKIwsD0Kvb29KYdW5VDT9fg9d1ccjQBY,2102
92
93
  pysdmx/io/pd.py,sha256=1C5UnAT25EADOpNsRBooEdWNaJEGdmcwh6_R9O5MOrc,464
93
- pysdmx/io/reader.py,sha256=RJJ55TMYUX5B06ELwKPtfKR3rJIkfyg_q8UskfnM76Y,10470
94
+ pysdmx/io/reader.py,sha256=VmqpmQAvDhTHKjFcUBC_fpmnY8VgC9ffS8JLq-c3D5o,11230
94
95
  pysdmx/io/serde.py,sha256=xTd22JEaefhCpVcUqVthf4gtDQT1KeiDZ-9w52o2zQk,1594
95
96
  pysdmx/io/writer.py,sha256=1UVJvZm3eD2wQxZ-PruQdhQMu3l2egju-cxOvZBrH-o,5833
96
97
  pysdmx/io/xml/__allowed_lxml_errors.py,sha256=PdIK2i6JwwGRh1Ogc5JA0hRySO7QXJKN-DI8EYtdjA0,225
97
- pysdmx/io/xml/__data_aux.py,sha256=ztivjZANN1PJ63IvoMfx-5TA2AiPQTVPC_0YYHOT9Ns,4069
98
+ pysdmx/io/xml/__data_aux.py,sha256=oLTfk49FuoF0LjMrV5o55PN_5wWPHZTv49aDBdbflYc,4331
98
99
  pysdmx/io/xml/__init__.py,sha256=tcUsSEiM3nBA7lDbZPwGZ7Vu_K9gQd8oliASUMTGjFE,105
99
- pysdmx/io/xml/__parse_xml.py,sha256=SITC7Yptq_qY_exetRez90lJCukH1WsKDMqlk7Q1RaY,2899
100
+ pysdmx/io/xml/__parse_xml.py,sha256=4zZKGlvrNAccILH-mlQzZFV2HF15wIUGDXttVG3SvNM,2975
100
101
  pysdmx/io/xml/__ss_aux_reader.py,sha256=6mumQYcDdF_vrX65vSodE4I1b7upKbP6yNNSM2N6pUs,2853
101
- pysdmx/io/xml/__structure_aux_reader.py,sha256=xqwZZ2qWi8IUW2KMVhuABp1TSx6dSRH4BmvKh5kXxyk,40348
102
- pysdmx/io/xml/__structure_aux_writer.py,sha256=5eaTJ4rWMSMtM4MsaupTIMmhaPOJbXQtQbvYO-aDSHU,43589
103
- pysdmx/io/xml/__tokens.py,sha256=Y_SlFWYIXolsgjHoFq7pm3TYlEu07CR9TmJKk2jHfQ0,6823
104
- pysdmx/io/xml/__write_aux.py,sha256=KHZxEhGSjZPRW93OvniZ0kHmiAJtKJu-2aLtMhsKt90,15396
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
105
106
  pysdmx/io/xml/__write_data_aux.py,sha256=Kfwxi8XHXj4W94D41cTdPig6GYw_3wTUzfDucNWDVx0,3353
106
107
  pysdmx/io/xml/__write_structure_specific_aux.py,sha256=reRDVw4Xwag0ODyMzm9uOk9WJ_e1ELxAPYHSMUUDJBQ,8919
107
108
  pysdmx/io/xml/config.py,sha256=R24cczVkzkhjVLXpv-qfEm88W3_QTqVt2Qofi8IvJ5Y,93
108
109
  pysdmx/io/xml/doc_validation.py,sha256=WXDhte96VEAeZMMHJ0Y68WW8HEoOhEiOYEnbGP5Zwjw,1795
109
- pysdmx/io/xml/header.py,sha256=_XiruPAfMtr4wudCpiuhFXDvRgWITGQ9GZVG3lMvWcc,5535
110
+ pysdmx/io/xml/header.py,sha256=My03uhWD3AkfTwfUqiblmLIZuqd7uvIEYsOial6TClg,5971
110
111
  pysdmx/io/xml/sdmx21/__init__.py,sha256=_rh_dz1d-LmUw4iVbsZQkTXANTJeR8ov8z_4jNRGhtg,38
111
112
  pysdmx/io/xml/sdmx21/reader/__init__.py,sha256=2jMsySFbbq-So3ymqzKVi5gOPRwO0qasBBwntD03rTw,34
112
113
  pysdmx/io/xml/sdmx21/reader/error.py,sha256=ySY3dBPcOaF_lm8yX1Khc92R5XgyD1u-djjiOrgZJP8,885
@@ -134,16 +135,17 @@ pysdmx/io/xml/sdmx31/writer/__init__.py,sha256=wSWTfbD6bBh-gsdn1Z2kyIa5YXq3WEfn-
134
135
  pysdmx/io/xml/sdmx31/writer/structure.py,sha256=hK-BYOsyyuqLTqxe6qC3PxeDJDp3_qyBTqGUfpVjTl8,2105
135
136
  pysdmx/io/xml/sdmx31/writer/structure_specific.py,sha256=OtP_uxn-y9tVB9eNRP6ov3zBL1wtr4SRef9llB4A3yk,3236
136
137
  pysdmx/io/xml/utils.py,sha256=ljrocQwPTYycg3I68sqYI5pF8qukNccSCMM9Xf_Tag0,583
137
- pysdmx/model/__base.py,sha256=H5OpCpi6fGxB30vFn-lCstTczSdOB4YJiBynThovQs4,13810
138
- pysdmx/model/__init__.py,sha256=uuR3JYtgLqa6BpY3EnylR_TEdIgF46dqsV63uHcHmQ0,5161
139
- pysdmx/model/category.py,sha256=WWWysaTdlcU8KZpQyZgbZkrOelNVCGOfVUk_APJxm-w,6031
138
+ pysdmx/model/__base.py,sha256=M1O-uT8RqeKZpGT09HD6ifjPl0F9ORxlRYra3fn8qCM,15182
139
+ pysdmx/model/__init__.py,sha256=UPZtum_PF-nPPQa21Bq1doUXLCoU-yRGPh45ZXdUI9k,5493
140
+ pysdmx/model/category.py,sha256=ksYIOGPHgZI619RhmRXZUXHP_juY9im40tWzR2yuMEc,6796
140
141
  pysdmx/model/code.py,sha256=Wu6rEXeZf_XA0aBrDXgN-3yvySAHH7SAjrWliFlmC24,12799
141
142
  pysdmx/model/concept.py,sha256=mQfqJdtWc10WdTKX_Mw7Znw65cN3QO-kCar9MWYeWO4,9645
143
+ pysdmx/model/constraint.py,sha256=MwI_GLKzwkuo0BzAsgcnDeB-b7bq8qqwHNte5JjCEFA,1960
142
144
  pysdmx/model/dataflow.py,sha256=9EzGn-EDm1OQa52N5ep8VApZoj7lHWfIs-W5tnBP9FY,23954
143
145
  pysdmx/model/dataset.py,sha256=Lbr7tYonGHD3NZUD-M9hK2puaEAluOVPG2DbkOohzMM,4861
144
146
  pysdmx/model/gds.py,sha256=QrnmI8Hn--C95gGXCeUeWwhn-Ur7DuT08Cg7oPJIEVI,4976
145
147
  pysdmx/model/map.py,sha256=9a3hl6efq_5kAYuJWkepoQOkao8Eqk17N69JGyRfxsk,17506
146
- pysdmx/model/message.py,sha256=yZ7b_bEmkCDj6oxS5_Dk7DlngLCYjlbhj4kvd_aS5ho,15554
148
+ pysdmx/model/message.py,sha256=OFzIe3DYtDWRDwy-k8O3mtdcmWFWoF89Z7WoT6sMUao,16512
147
149
  pysdmx/model/metadata.py,sha256=qxUcb6AMmTJhRHyVHKbpfJ9TV-UYTdPXTxGVNip0UyA,16992
148
150
  pysdmx/model/organisation.py,sha256=k6ZQ_O4l7174Y8tr-nnMnsUL0q0O8Rw3q4mIWmJUh2A,4706
149
151
  pysdmx/model/submission.py,sha256=iMQSvt-BYuDrqPEBcjw_wWNp74Vsx2OnEj3tnkth0Z8,833
@@ -152,15 +154,16 @@ pysdmx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
154
  pysdmx/toolkit/__init__.py,sha256=yBRw4FXQH_RUJgF6vwZscNwCVBt-FMwslJEfDKa7eXo,26
153
155
  pysdmx/toolkit/pd/__init__.py,sha256=3JoCZHamJR4mZfLt9GmaznLlG_YilmY0hAhuW5COQC8,3138
154
156
  pysdmx/toolkit/pd/_data_utils.py,sha256=fzXl_a1M8NI7HHI23tRmLlS4PBZ9N4Tgtqh-zxg19qk,3265
155
- pysdmx/toolkit/vtl/__init__.py,sha256=nVwtISeFiT4tr2gNjb2A-P_IRAdqv6Mn7EOgFkaRleg,216
156
- pysdmx/toolkit/vtl/_validations.py,sha256=Djc5hHpj79SksvnAA0vL5EnpsDCdQ_BmB6zsr7Ze9Eg,5639
157
- pysdmx/toolkit/vtl/script_generation.py,sha256=YOP_-MMcIdDIHYa8HIMuVCN9N-S9CQD8bH5xpF1kc2E,3235
157
+ pysdmx/toolkit/vtl/__init__.py,sha256=jYWScnAomHlkvTtl07ur82UEqALCveiAEmMbqdWhT1A,388
158
+ pysdmx/toolkit/vtl/_validations.py,sha256=k0le8fDUOGNl97P-QbNglrNyr5fCh5dLPMiTk1yu1jw,5590
159
+ pysdmx/toolkit/vtl/convert.py,sha256=FNToVTG4Zu9n7h_Fre-LEGihx8RMGSJb7G6-FFyPg8Y,11355
160
+ pysdmx/toolkit/vtl/script_generation.py,sha256=pIDKd12uQrmbiU21DbDm8UbYMW2PYldFV_OXCzyqU_8,3203
158
161
  pysdmx/toolkit/vtl/validation.py,sha256=UieJUYwxkw9McHZwixKFQdgYKFsgFwFo5XCLIIDcr7Q,3594
159
162
  pysdmx/util/__init__.py,sha256=m_XWRAmVJ7F6ai4Ckrj_YuPbhg3cJZAXeZrEThrL88k,3997
160
163
  pysdmx/util/_date_pattern_map.py,sha256=IS1qONwVHbTBNIFCT0Rqbijj2a9mYvs7onXSK6GeQAQ,1620
161
- pysdmx/util/_model_utils.py,sha256=d0XY8cnxvviQtkJJInVik7LWeuqX-eb4-zikFortL58,2335
164
+ pysdmx/util/_model_utils.py,sha256=nQ1yWBt-tZYDios9xvRvJ7tHq6A8_RoGdY1wi7WGz2w,3793
162
165
  pysdmx/util/_net_utils.py,sha256=nOTz_x3FgFrwKh42_J70IqYXz9duQkMFJWtejZXcLHs,1326
163
- pysdmx-1.8.1.dist-info/METADATA,sha256=iz3Tj7Ygmub585wRzXNuWbqrLs7S-3PrKH4dq65EIP8,4719
164
- pysdmx-1.8.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
165
- pysdmx-1.8.1.dist-info/licenses/LICENSE,sha256=3XTNDPtv2RxDUNkQzn9MIWit2u7_Ob5daMLEq-4pBJs,649
166
- pysdmx-1.8.1.dist-info/RECORD,,
166
+ pysdmx-1.10.0.dist-info/METADATA,sha256=0_atUmYuBUjn6CUBVoEUMzeeitSfHV5lFirg1YF8RRs,4849
167
+ pysdmx-1.10.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
168
+ pysdmx-1.10.0.dist-info/licenses/LICENSE,sha256=3XTNDPtv2RxDUNkQzn9MIWit2u7_Ob5daMLEq-4pBJs,649
169
+ pysdmx-1.10.0.dist-info/RECORD,,