pysdmx 1.5.2__py3-none-any.whl → 1.6.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 (58) hide show
  1. pysdmx/__init__.py +1 -1
  2. pysdmx/api/fmr/__init__.py +8 -3
  3. pysdmx/api/fmr/maintenance.py +158 -0
  4. pysdmx/api/qb/structure.py +1 -0
  5. pysdmx/api/qb/util.py +1 -0
  6. pysdmx/io/csv/__csv_aux_reader.py +99 -0
  7. pysdmx/io/csv/__csv_aux_writer.py +118 -0
  8. pysdmx/io/csv/sdmx10/reader/__init__.py +9 -14
  9. pysdmx/io/csv/sdmx10/writer/__init__.py +28 -2
  10. pysdmx/io/csv/sdmx20/__init__.py +0 -9
  11. pysdmx/io/csv/sdmx20/reader/__init__.py +8 -61
  12. pysdmx/io/csv/sdmx20/writer/__init__.py +32 -25
  13. pysdmx/io/csv/sdmx21/__init__.py +1 -0
  14. pysdmx/io/csv/sdmx21/reader/__init__.py +86 -0
  15. pysdmx/io/csv/sdmx21/writer/__init__.py +70 -0
  16. pysdmx/io/format.py +8 -0
  17. pysdmx/io/input_processor.py +16 -2
  18. pysdmx/io/json/fusion/messages/code.py +21 -4
  19. pysdmx/io/json/fusion/messages/concept.py +16 -8
  20. pysdmx/io/json/fusion/messages/dataflow.py +8 -1
  21. pysdmx/io/json/fusion/messages/dsd.py +15 -0
  22. pysdmx/io/json/fusion/messages/schema.py +8 -1
  23. pysdmx/io/json/sdmxjson2/messages/agency.py +43 -7
  24. pysdmx/io/json/sdmxjson2/messages/category.py +92 -7
  25. pysdmx/io/json/sdmxjson2/messages/code.py +239 -18
  26. pysdmx/io/json/sdmxjson2/messages/concept.py +78 -13
  27. pysdmx/io/json/sdmxjson2/messages/constraint.py +5 -5
  28. pysdmx/io/json/sdmxjson2/messages/core.py +121 -14
  29. pysdmx/io/json/sdmxjson2/messages/dataflow.py +63 -8
  30. pysdmx/io/json/sdmxjson2/messages/dsd.py +215 -20
  31. pysdmx/io/json/sdmxjson2/messages/map.py +200 -24
  32. pysdmx/io/json/sdmxjson2/messages/pa.py +36 -5
  33. pysdmx/io/json/sdmxjson2/messages/provider.py +35 -7
  34. pysdmx/io/json/sdmxjson2/messages/report.py +85 -7
  35. pysdmx/io/json/sdmxjson2/messages/schema.py +11 -12
  36. pysdmx/io/json/sdmxjson2/messages/structure.py +150 -2
  37. pysdmx/io/json/sdmxjson2/messages/vtl.py +547 -17
  38. pysdmx/io/json/sdmxjson2/reader/metadata.py +32 -0
  39. pysdmx/io/json/sdmxjson2/reader/structure.py +32 -0
  40. pysdmx/io/json/sdmxjson2/writer/__init__.py +9 -0
  41. pysdmx/io/json/sdmxjson2/writer/metadata.py +60 -0
  42. pysdmx/io/json/sdmxjson2/writer/structure.py +61 -0
  43. pysdmx/io/reader.py +28 -9
  44. pysdmx/io/serde.py +17 -0
  45. pysdmx/io/writer.py +45 -9
  46. pysdmx/io/xml/__write_data_aux.py +1 -54
  47. pysdmx/io/xml/__write_structure_specific_aux.py +1 -1
  48. pysdmx/io/xml/sdmx21/writer/generic.py +1 -1
  49. pysdmx/model/code.py +11 -1
  50. pysdmx/model/dataflow.py +23 -0
  51. pysdmx/model/map.py +12 -4
  52. pysdmx/model/message.py +9 -1
  53. pysdmx/toolkit/pd/_data_utils.py +100 -0
  54. pysdmx/toolkit/vtl/_validations.py +2 -3
  55. {pysdmx-1.5.2.dist-info → pysdmx-1.6.0.dist-info}/METADATA +3 -2
  56. {pysdmx-1.5.2.dist-info → pysdmx-1.6.0.dist-info}/RECORD +58 -46
  57. {pysdmx-1.5.2.dist-info → pysdmx-1.6.0.dist-info}/WHEEL +1 -1
  58. {pysdmx-1.5.2.dist-info → pysdmx-1.6.0.dist-info/licenses}/LICENSE +0 -0
pysdmx/model/message.py CHANGED
@@ -332,7 +332,7 @@ class MetadataMessage(Struct, frozen=True):
332
332
  if self.reports:
333
333
  return self.reports
334
334
  else:
335
- raise NotFound("No metadata reports werefound in the message.")
335
+ raise NotFound("No metadata reports were found in the message.")
336
336
 
337
337
 
338
338
  class Message(StructureMessage, frozen=True):
@@ -349,6 +349,7 @@ class Message(StructureMessage, frozen=True):
349
349
 
350
350
  data: Optional[Sequence[Dataset]] = None
351
351
  submission: Optional[Sequence[SubmissionResult]] = None
352
+ reports: Optional[Sequence[MetadataReport]] = None
352
353
 
353
354
  def __post_init__(self) -> None:
354
355
  """Checks if the content is valid."""
@@ -382,3 +383,10 @@ class Message(StructureMessage, frozen=True):
382
383
  f"No Dataset with Short URN {short_urn} found in data.",
383
384
  "Could not find the requested Dataset.",
384
385
  )
386
+
387
+ def get_reports(self) -> Sequence[MetadataReport]:
388
+ """Returns the metadata reports."""
389
+ if self.reports:
390
+ return self.reports
391
+ else:
392
+ raise NotFound("No metadata reports were found in the message.")
@@ -0,0 +1,100 @@
1
+ from typing import Any, Dict, List, Literal, Sequence, Tuple
2
+
3
+ import pandas as pd
4
+
5
+ from pysdmx.model.dataflow import Component, Schema
6
+
7
+
8
+ def format_labels( # noqa: C901
9
+ df: pd.DataFrame,
10
+ labels: Literal["name", "both", "id"],
11
+ components: Sequence[Component],
12
+ ) -> None:
13
+ """Writes the labels to the DataFrame.
14
+
15
+ Args:
16
+ df: The DataFrame to write the labels to.
17
+ labels: The label type to write.
18
+ if "id" the id of the data is written.
19
+ if "name" the name of the data is written.
20
+ if "both" a string id:name is written.
21
+ components: The components of the data structure definition.
22
+
23
+ """
24
+ if labels == "name":
25
+ for k in df.columns:
26
+ for component in components:
27
+ if component.id == k:
28
+ df.rename(
29
+ columns={k: component.concept.name}, # type: ignore[union-attr]
30
+ inplace=True,
31
+ )
32
+ elif labels == "both":
33
+ for k in df.columns:
34
+ v = df[k]
35
+ for component in components:
36
+ if component.id == k:
37
+ df[f"{k}:{component.concept.name}"] = v.apply( # type: ignore[union-attr]
38
+ lambda x: f"{x}:{x}"
39
+ )
40
+ df.drop(columns=[k], inplace=True)
41
+
42
+ else:
43
+ for k in df.columns:
44
+ for component in components:
45
+ if component.concept.name == k: # type: ignore[union-attr]
46
+ df.rename(
47
+ columns={k: component.concept.id},
48
+ inplace=True,
49
+ )
50
+
51
+
52
+ def get_codes(
53
+ dimension_code: str, structure: Schema, data: pd.DataFrame
54
+ ) -> Tuple[List[str], List[str], List[Dict[str, Any]]]:
55
+ """This function divides the components in Series and Obs."""
56
+ series_codes = []
57
+ groups = structure.groups
58
+ group_codes = []
59
+ obs_codes = [dimension_code, structure.components.measures[0].id]
60
+
61
+ # Getting the series and obs codes
62
+ for dim in structure.components.dimensions:
63
+ if dim.id != dimension_code:
64
+ series_codes.append(dim.id)
65
+
66
+ # Adding the attributes based on the attachment level
67
+ for att in structure.components.attributes:
68
+ matching_group = next(
69
+ (
70
+ group
71
+ for group in groups or []
72
+ if set(group.dimensions)
73
+ == set(att.attachment_level.split(",")) # type: ignore[union-attr]
74
+ ),
75
+ None,
76
+ )
77
+
78
+ if (
79
+ att.attachment_level != "D"
80
+ and att.id in data.columns
81
+ and groups is not None
82
+ and matching_group
83
+ ):
84
+ group_codes.append(
85
+ {
86
+ "group_id": matching_group.id,
87
+ "attribute": att.id,
88
+ "dimensions": matching_group.dimensions,
89
+ }
90
+ )
91
+ elif att.attachment_level == "O" and att.id in data.columns:
92
+ obs_codes.append(att.id)
93
+ elif (
94
+ att.attachment_level is not None
95
+ and att.attachment_level != "D"
96
+ and att.id in data.columns
97
+ ):
98
+ series_codes.append(att.id)
99
+
100
+ return series_codes, obs_codes, group_codes
@@ -10,7 +10,6 @@ from vtlengine.AST import (
10
10
  )
11
11
 
12
12
  from pysdmx.errors import Invalid
13
- from pysdmx.io.xml.__tokens import RULE_SCHEME, UDO_SCHEME
14
13
  from pysdmx.model import Reference
15
14
  from pysdmx.model.vtl import (
16
15
  Ruleset,
@@ -62,7 +61,7 @@ def _ruleset_scheme_validations(ruleset_scheme: RulesetScheme) -> None:
62
61
 
63
62
  def _ruleset_scheme_reference_validations(ruleset_scheme: Reference) -> None:
64
63
  """Additional validation checks for ruleset schemes."""
65
- if ruleset_scheme.sdmx_type != RULE_SCHEME:
64
+ if ruleset_scheme.sdmx_type != "RulesetScheme":
66
65
  raise Invalid(
67
66
  "Reference in Ruleset Schemes must point to a Ruleset Scheme, "
68
67
  f"got {ruleset_scheme.sdmx_type}"
@@ -105,7 +104,7 @@ def _user_defined_operator_scheme_validations(
105
104
 
106
105
  def _udo_scheme_reference_validations(udo_scheme: Reference) -> None:
107
106
  """Additional validation checks for ruleset schemes."""
108
- if udo_scheme.sdmx_type != UDO_SCHEME:
107
+ if udo_scheme.sdmx_type != "UserDefinedOperatorScheme":
109
108
  raise Invalid(
110
109
  "Reference in User Defined Operator Schemes"
111
110
  " must point to a Defined Operator Scheme, "
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: pysdmx
3
- Version: 1.5.2
3
+ Version: 1.6.0
4
4
  Summary: Your opinionated Python SDMX library
5
5
  License: Apache-2.0
6
+ License-File: LICENSE
6
7
  Keywords: sdmx,data discovery,data retrieval,metadata,fmr
7
8
  Author: Xavier Sosnovsky
8
9
  Author-email: <xavier.sosnovsky@bis.org>
@@ -1,5 +1,5 @@
1
1
  pysdmx/__extras_check.py,sha256=I39OaM1lAPBnyzHVJ7kA_ZA_tMeDAQLr6ZKqEQ9MK1Q,1659
2
- pysdmx/__init__.py,sha256=lCxIWAalK5owRQR4jCgDW0NekksEmfHD_f-6xsEa4gM,67
2
+ pysdmx/__init__.py,sha256=cHUjmNrPbr3mfScL4Gxdsxgf2PUgEDnYf5v8XTQl04Q,67
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,8 @@ 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=04PEKA7fW9hKBUr2QQSO6lzYSY9kjNu0ddL1P4CF-Jw,40811
13
+ pysdmx/api/fmr/__init__.py,sha256=Ya25AH-os812eOF_laaOBpZqyAfa0um3wWpsKOJTGeA,40965
14
+ pysdmx/api/fmr/maintenance.py,sha256=AnR1beyL6nsoDM5LmDLXnRMW5JvhGHXTADf_INSNgUg,5920
14
15
  pysdmx/api/gds/__init__.py,sha256=BBl75wEdcz9zPMfk6kAGHitRW39S774VL9xifMZ_uHs,11560
15
16
  pysdmx/api/qb/__init__.py,sha256=vxdMJFFg4J_KWADrnzj_8KcU0UlwpJPdx0yiW3QJo9Y,1498
16
17
  pysdmx/api/qb/availability.py,sha256=2yPHnTXu_jACNKNhhtXMkxVkfLK1Ewa5ucGAbRxvC5o,10181
@@ -20,32 +21,37 @@ pysdmx/api/qb/refmeta.py,sha256=rWhMcUkcQ0zYoiEVAVFOnykLLhMWFFZssFZh8z3kRng,1067
20
21
  pysdmx/api/qb/registration.py,sha256=IURlmXcXQi8e-w5YXCgRNs07EQJZJ2bOdZb7M_k5iZ8,7132
21
22
  pysdmx/api/qb/schema.py,sha256=f0V-fQl9GQ2YWhnZqUF_wogB2L9dRIdY_vT4XvYkqoI,5747
22
23
  pysdmx/api/qb/service.py,sha256=ieLgOR27NNRD2P4FGhFmWVkJweGngAx-mWkTDfsVCyI,14001
23
- pysdmx/api/qb/structure.py,sha256=NA4-Xlnj55xNLFlAC2qmaSRgKYbzFjQTKXA5G-SYlBo,17783
24
- pysdmx/api/qb/util.py,sha256=Meysdjad-ZyE2WZ1xwMGYrVQPapCKG5QdT4LkdF5CSw,3651
24
+ pysdmx/api/qb/structure.py,sha256=OoIlP3twT1-v4pY5wZyNlttmZOXQ5Vk-zc7j-qMtwXw,17814
25
+ pysdmx/api/qb/util.py,sha256=at2Sb2kVltSTDc1gKiqG6HtIFhjSx-Msbe--wCvRbQI,3667
25
26
  pysdmx/errors.py,sha256=9bfujYykzfGMa1TuUOmH9QqghnZGOo556fvbKH2jFa8,3295
26
27
  pysdmx/io/__init__.py,sha256=96ZCY1PfcWp_q2Nlo2tHJAK31sH_b05v9UkbR0vGdg0,180
28
+ pysdmx/io/csv/__csv_aux_reader.py,sha256=2RGzhga_VDnh2OVX_Bo-rR2hgAQxHXa7zt7-D5MVBu0,3994
29
+ pysdmx/io/csv/__csv_aux_writer.py,sha256=lCPl6hpyp12xhXlyimRlxxOT33RcgXDGTQZb8JguksI,4118
27
30
  pysdmx/io/csv/__init__.py,sha256=53f2rPkwILigOqArgRQOOwLk-ha6zVTe4EypIsR7K6I,107
28
31
  pysdmx/io/csv/sdmx10/__init__.py,sha256=NAAm_yodK-gzkuzewGQeYpF3f5nZmDA4vWGfT2KGTWc,38
29
- pysdmx/io/csv/sdmx10/reader/__init__.py,sha256=13TXdR7aqw1RxPnYuq6OG7Uz7a9eIzfDRi_wNMRaG54,2877
30
- pysdmx/io/csv/sdmx10/writer/__init__.py,sha256=c7WvEufF8UBu6Lf417a4ujY8cQ7QOiQ9_cu_MIej0Gg,1648
31
- pysdmx/io/csv/sdmx20/__init__.py,sha256=mNfMJKSpmMfk4CbbHhjnBOTQ2IZFY15cNUhHtJPcs90,231
32
- pysdmx/io/csv/sdmx20/reader/__init__.py,sha256=HSSUE3iL9g2Bzb_vKw97-Uw_3H3yUQxN8ssAyr1EJkI,4925
33
- pysdmx/io/csv/sdmx20/writer/__init__.py,sha256=xqNg2L2BdCkKVIkMrBpkbR6wq2gZ3r1K7oZRkZ1aBoU,2062
34
- pysdmx/io/format.py,sha256=BJghvHaXNvsfqJCWvB8jhjGMaLPv7zi7N12O0qRwChc,4749
35
- pysdmx/io/input_processor.py,sha256=KJPWOumYqjoewetbFQ4qzqDqOC6hpcksaThvLp_Y7Oc,6366
32
+ pysdmx/io/csv/sdmx10/reader/__init__.py,sha256=uGc-sv4YXHteVQZPTdkVUkVZ6iKY7h7Fg56dw7VZ2UU,2735
33
+ pysdmx/io/csv/sdmx10/writer/__init__.py,sha256=d-kLcP711k1nmG_D4whDxqWCzODRT7HTqk95N-jXBK8,2923
34
+ pysdmx/io/csv/sdmx20/__init__.py,sha256=6_YCb4iuUWJRS9y0KSdf4ebNKblSlnTTzNC5c19kNk8,38
35
+ pysdmx/io/csv/sdmx20/reader/__init__.py,sha256=PmVXd8QXvXej6XSDAPsIc8VptLk69NK37-wunHH7Pvc,2846
36
+ pysdmx/io/csv/sdmx20/writer/__init__.py,sha256=puksYRzcog3wv9JGWA--6rvv9aRAn86Vsv1CyA7Em-c,2489
37
+ pysdmx/io/csv/sdmx21/__init__.py,sha256=I3_dwi4A4if62_mwEjqbOa-F7mhoIMf0D6szpDf3W7c,38
38
+ pysdmx/io/csv/sdmx21/reader/__init__.py,sha256=J1cCkZh3klgZZWjdQ_U1zkfzT_DVzQmdreGZhN33SLs,2866
39
+ pysdmx/io/csv/sdmx21/writer/__init__.py,sha256=CH8Nm7hqvXyN6XM_D2nJRmbKj6CJV-X1QzSF0WJrs0E,2484
40
+ pysdmx/io/format.py,sha256=EO-PyYpiU0WswvEGA5UHokladxPezcwBUo1AJTqxp1Q,5250
41
+ pysdmx/io/input_processor.py,sha256=kJuo3-zSuTD3eejGDCXS_5aBxnDwnAh8hO0Tl2dS_XY,6948
36
42
  pysdmx/io/json/fusion/messages/__init__.py,sha256=C0LAG6UfIZcQdlCv5d_D1ZNIcCq04RxZYLAp6tLDqwY,1573
37
43
  pysdmx/io/json/fusion/messages/category.py,sha256=E9jrzXenEpqDNUhT1JJLYxty37PSGegRtx45mB3-COg,4589
38
- pysdmx/io/json/fusion/messages/code.py,sha256=kB3RJiSA75G4IJYObYR0hdiXYcRs-vNMKqUeA6F4SSo,7529
39
- pysdmx/io/json/fusion/messages/concept.py,sha256=aOfJxQSC3b1cgDdxZNFUcab3mpPEvtnXIbNjbIwPIog,2750
44
+ pysdmx/io/json/fusion/messages/code.py,sha256=YayxSKiHa124WTr_lK8HTfXHomh_e0oDZvuydd29XKg,8300
45
+ pysdmx/io/json/fusion/messages/concept.py,sha256=k_Ym4J9Nibv7QV_UmIKsO5QfOdJVgJRlbk9SxRHHblA,3113
40
46
  pysdmx/io/json/fusion/messages/constraint.py,sha256=dPkzhCWN49Y9ReSZPRFTdM6GWc0rU2BZTyFfWsqlX34,615
41
47
  pysdmx/io/json/fusion/messages/core.py,sha256=GdzF3TNUGrB0gxuaaSpk9LaYqcdy_M6L2azExZQfM0Q,4843
42
- pysdmx/io/json/fusion/messages/dataflow.py,sha256=oxocZAdl_uMroO6Msu6k7lEz_tGLvj3oKeDhH_IMb7E,2833
43
- pysdmx/io/json/fusion/messages/dsd.py,sha256=ccNKx3RlWNkIDMpDJ036mxzkNy8-ZFSOBGfZyjEOths,7755
48
+ pysdmx/io/json/fusion/messages/dataflow.py,sha256=lsaMPjmA-KiM51I78wrONfNHyvfBSeAll5Sp0jmTezc,2972
49
+ pysdmx/io/json/fusion/messages/dsd.py,sha256=5n6AdhoJZ41A-BocFrqmTlprZX4WGOA2bAr_S57CrCw,8433
44
50
  pysdmx/io/json/fusion/messages/map.py,sha256=TPsCFuUfk5Jhhe7CNvEoHuFNZFpHhvNiYFWeIEUx-sc,7695
45
51
  pysdmx/io/json/fusion/messages/org.py,sha256=9gZpHg6o4fPGY9fUIDUCyKQCCLL6NYFHnQJkxdXD8v8,6264
46
52
  pysdmx/io/json/fusion/messages/pa.py,sha256=6zN8Qxj5bdf5zo2N9TwYlSLyGxokvsELtk1--1cMbxw,1393
47
53
  pysdmx/io/json/fusion/messages/report.py,sha256=ZE62ZmHlCXk3TxRTRWCDCKVMhnN0J5UjMEzrsnD5I3E,1551
48
- pysdmx/io/json/fusion/messages/schema.py,sha256=47uiSD5GSrd6TCnDFeg10SztP3vNuzKbYSvvKNK4wB0,2371
54
+ pysdmx/io/json/fusion/messages/schema.py,sha256=xBbpLyJNapJpzZA4vAvROmWTSNYymcpggqMZ_NjL444,2603
49
55
  pysdmx/io/json/fusion/messages/vtl.py,sha256=7VGjDRWzKMO6WT4CnGvGBKinhX06DzrJmDRudnvN4XM,16092
50
56
  pysdmx/io/json/fusion/reader/__init__.py,sha256=fpya2W7YJ6lcdupAybBawMtJI7PT0gy48gLkDbuPTWU,1295
51
57
  pysdmx/io/json/gds/messages/__init__.py,sha256=5LqGtO3GDi2B6HM2eDGCSJCncLS8C4MQ7vd5YBvCRok,885
@@ -56,26 +62,31 @@ pysdmx/io/json/gds/messages/services.py,sha256=OUFmYK4XkNMoaw70n4QabyxzdRDh-0XeY
56
62
  pysdmx/io/json/gds/messages/urn_resolver.py,sha256=w_wRRAwjaBw_yooSda1MXcD_aN63FdpFE7WFvcjHSeQ,1209
57
63
  pysdmx/io/json/gds/reader/__init__.py,sha256=cXQvjSzRe4lTsGmru6qMYE_HU2DEccJSYKsQ5ayIpxw,373
58
64
  pysdmx/io/json/sdmxjson2/messages/__init__.py,sha256=pqLbzZf-FkuSJWy8DLxtCXIu-Si2Mm-vDTzCqnJDNVA,1984
59
- pysdmx/io/json/sdmxjson2/messages/agency.py,sha256=m8ltYpMfAzNllM2sd9K4BskS1_nF-gByXmjAizRwlBM,2478
60
- pysdmx/io/json/sdmxjson2/messages/category.py,sha256=cqBjFm6o7XrhWWAjdR2lTbfOCJJWa6DlfAKjnQUq7uk,4737
61
- pysdmx/io/json/sdmxjson2/messages/code.py,sha256=yo1-bx2brHfhPjymsj71SHz_PyOWJODBNa7oiMIAcDc,9381
62
- pysdmx/io/json/sdmxjson2/messages/concept.py,sha256=fvwnfaBh10AtvCXkQuHbeYu5C7Fvn7wsg2zdBOV1kWc,3086
63
- pysdmx/io/json/sdmxjson2/messages/constraint.py,sha256=XJsf7O8LBROOy8uyHzdBXyUUpOCUn46IrzuhETSF4_g,1636
64
- pysdmx/io/json/sdmxjson2/messages/core.py,sha256=lMrlWg1Qbrj5ZG3duewr94YFmyiEu0jgnUHFL0f41T0,6381
65
- pysdmx/io/json/sdmxjson2/messages/dataflow.py,sha256=EylbN2s7fz-rH5F0D5wtomJYX3DhNnWd0lbIMBXizjw,4506
66
- pysdmx/io/json/sdmxjson2/messages/dsd.py,sha256=8rEqsZ_oHcAhtbWsGgKc_VUqUYgWmWC0Aj5-X7bZ2y8,11518
67
- pysdmx/io/json/sdmxjson2/messages/map.py,sha256=VBsCO9QE_vItWZSPqySUU0W1r7qcc-2LNDZxqusFqcc,9891
68
- pysdmx/io/json/sdmxjson2/messages/pa.py,sha256=vmL47EVrdbw3YhyH3ZJB6_EEaLAwULQv5Bfd4qVrzx0,1665
69
- pysdmx/io/json/sdmxjson2/messages/provider.py,sha256=d2_UbNlgLLWqR9JCIBFwI7qswMaFuWKoSPc2bsnL23c,3165
70
- pysdmx/io/json/sdmxjson2/messages/report.py,sha256=E4Xo3CcUPf_ihF5bTSczBXhupYLjtOdMH6XQh5eunhA,3508
71
- pysdmx/io/json/sdmxjson2/messages/schema.py,sha256=hGEqEnNJ2LKnDTanVSPoF82ZsFvMWqZmYdzYEA--FaA,2634
72
- pysdmx/io/json/sdmxjson2/messages/structure.py,sha256=WpQttjSdGK1AuWfR69gpe4E7HP9zkG6TWOvFhIpbis4,5446
73
- pysdmx/io/json/sdmxjson2/messages/vtl.py,sha256=UrcNP5p_R2R_bFrY-vbOKCGYXkD5N4yBAwZlCWetDMQ,14700
65
+ pysdmx/io/json/sdmxjson2/messages/agency.py,sha256=d9t_2HrcZcqu_Y-EchShWDRF5yJQn86urfcFl5qvWAc,3720
66
+ pysdmx/io/json/sdmxjson2/messages/category.py,sha256=k61oDSLNKl0G_Mov2AmC4ff1efCPsNfyNEbz0iajkpI,7656
67
+ pysdmx/io/json/sdmxjson2/messages/code.py,sha256=XX9-OC_KH1ZF0Gef0ucGky5yVYCZwcWcVAnVCN63noo,17245
68
+ pysdmx/io/json/sdmxjson2/messages/concept.py,sha256=IRr6xfmFKsTrugnxbcWWUiUgEM11s8Oa5IW6mZA5NQA,5624
69
+ pysdmx/io/json/sdmxjson2/messages/constraint.py,sha256=6pONMHr7IT8O026Xnv6AjIMVmoS29ivNiOMPr1OWQZQ,1736
70
+ pysdmx/io/json/sdmxjson2/messages/core.py,sha256=Cb6U1J13KCXnGJ2P8xbThTg9GCdzhkIK-cA8EHbY6Js,10077
71
+ pysdmx/io/json/sdmxjson2/messages/dataflow.py,sha256=wjeq9yexTa012AtGdZsZflp3WQ6fP-3kas-gxADTFeQ,6256
72
+ pysdmx/io/json/sdmxjson2/messages/dsd.py,sha256=0J3PYq10aoqyoAw4KyJP4ObW2JHttaxZjR9xvgyA2aU,18941
73
+ pysdmx/io/json/sdmxjson2/messages/map.py,sha256=-hhUyPxIWKoIxij0qbuoFDsZMqmtMfclCMUme4c9SS0,16767
74
+ pysdmx/io/json/sdmxjson2/messages/pa.py,sha256=VoaPBgcWGwWU7h5IaVa5wNWncOoktWihSXjcP4vEb00,2780
75
+ pysdmx/io/json/sdmxjson2/messages/provider.py,sha256=W5FVPd03Q-P4h9ThPoPRTs-MAepsOj3k8m7vtEHt00A,4164
76
+ pysdmx/io/json/sdmxjson2/messages/report.py,sha256=thcZZUuoiJ6OJ9P33EOTN3PIHFKxdQUMapI7HmSoB4A,6571
77
+ pysdmx/io/json/sdmxjson2/messages/schema.py,sha256=Ejs8roep6bSL8Eyu7j18E6IiHXWJ3qSybnnRYNyio-E,2868
78
+ pysdmx/io/json/sdmxjson2/messages/structure.py,sha256=1RBHqgVIigcJXOdFMJ5N7xHJ_aXtwAdma7EFpmFtBqE,10520
79
+ pysdmx/io/json/sdmxjson2/messages/vtl.py,sha256=xCErG_ojn_z1-KrFBInatY2q83lEyWUUB0g-QK-auzk,35168
74
80
  pysdmx/io/json/sdmxjson2/reader/__init__.py,sha256=f9vTKscFIAQpAKh3pZ4ZKlZSKyGfj1yaZS9w7S0_hIc,1264
81
+ pysdmx/io/json/sdmxjson2/reader/metadata.py,sha256=fIuJL0y71leopBjqy8NqvzRzf9FeDBBzzh_VnzMGtFo,911
82
+ pysdmx/io/json/sdmxjson2/reader/structure.py,sha256=G2F23BR3BYfc_9thvDbRQHrmpxlK01mnu1myDpOohN0,889
83
+ pysdmx/io/json/sdmxjson2/writer/__init__.py,sha256=DZGkas1ghei4p6SZsIQI1LPToS-d8F1Nx75MC8reT7g,270
84
+ pysdmx/io/json/sdmxjson2/writer/metadata.py,sha256=qse5foElBdTWbxIc9rIH1B4DfOBMeLy7qocp3Y4cV7g,2043
85
+ pysdmx/io/json/sdmxjson2/writer/structure.py,sha256=kqINWWSFjowIKIwsD0Kvb29KYdW5VDT9fg9d1ccjQBY,2102
75
86
  pysdmx/io/pd.py,sha256=1C5UnAT25EADOpNsRBooEdWNaJEGdmcwh6_R9O5MOrc,464
76
- pysdmx/io/reader.py,sha256=saAQ71aRKqze2XeOSV5xcSEB056h8OTKbvm_qwRSfuk,9695
77
- pysdmx/io/serde.py,sha256=l8z9qulrUkRNZq63YOUqTTs7zpl1hdYZe3UAZW1aEpM,1062
78
- pysdmx/io/writer.py,sha256=I7n0yW4c2Hu7eUSWbyHcmWd2VtPkiTUlVE4zTNmdxIg,4759
87
+ pysdmx/io/reader.py,sha256=RJJ55TMYUX5B06ELwKPtfKR3rJIkfyg_q8UskfnM76Y,10470
88
+ pysdmx/io/serde.py,sha256=I6Cpq0gLacko7x-GrT_YQP0UZhC3xrnjVbKCrY9xIYk,1421
89
+ pysdmx/io/writer.py,sha256=EiKGKujhfzr-Max3_nUNMvZOm8QPWmkXeZi50QLjT6A,5847
79
90
  pysdmx/io/xml/__allowed_lxml_errors.py,sha256=PdIK2i6JwwGRh1Ogc5JA0hRySO7QXJKN-DI8EYtdjA0,225
80
91
  pysdmx/io/xml/__data_aux.py,sha256=ztivjZANN1PJ63IvoMfx-5TA2AiPQTVPC_0YYHOT9Ns,4069
81
92
  pysdmx/io/xml/__init__.py,sha256=tcUsSEiM3nBA7lDbZPwGZ7Vu_K9gQd8oliASUMTGjFE,105
@@ -85,8 +96,8 @@ pysdmx/io/xml/__structure_aux_reader.py,sha256=dGPmAiW4j38fbsAJ8xCDwXgUcwpOCwgO5
85
96
  pysdmx/io/xml/__structure_aux_writer.py,sha256=9x2wGYRP9vPGLlHA-3P5Xr3gY5g3gW5fmz0tDQJyH4U,43543
86
97
  pysdmx/io/xml/__tokens.py,sha256=Y_SlFWYIXolsgjHoFq7pm3TYlEu07CR9TmJKk2jHfQ0,6823
87
98
  pysdmx/io/xml/__write_aux.py,sha256=KHZxEhGSjZPRW93OvniZ0kHmiAJtKJu-2aLtMhsKt90,15396
88
- pysdmx/io/xml/__write_data_aux.py,sha256=DlFwR1KmVMJmwID_G7Tl9zasah9iiQKHuuHKJpd0huk,5052
89
- pysdmx/io/xml/__write_structure_specific_aux.py,sha256=Z5CIiy30TxK8igzcnwcruhGdohFxJaFyYyCojMU8nnY,8825
99
+ pysdmx/io/xml/__write_data_aux.py,sha256=Ma0aGo97dzrkSQ-U0_ytVPec1zn2VB3rffTIoRNTNco,3365
100
+ pysdmx/io/xml/__write_structure_specific_aux.py,sha256=3u7mAgFeP1bmhsYrIGlbOm31LDCN4y7AGA1H-IvW02g,8862
90
101
  pysdmx/io/xml/config.py,sha256=R24cczVkzkhjVLXpv-qfEm88W3_QTqVt2Qofi8IvJ5Y,93
91
102
  pysdmx/io/xml/doc_validation.py,sha256=qS-riLo3fMNLBrsQWzizeVNePuYT9W8wp9q-xE3QXto,1842
92
103
  pysdmx/io/xml/header.py,sha256=_XiruPAfMtr4wudCpiuhFXDvRgWITGQ9GZVG3lMvWcc,5535
@@ -99,7 +110,7 @@ pysdmx/io/xml/sdmx21/reader/structure_specific.py,sha256=S3-gLmaBFjBRIr25qQtlrao
99
110
  pysdmx/io/xml/sdmx21/reader/submission.py,sha256=8daiBW-sIVGaB6lYwHqJNkLI7IixMSydCK-0ZO8ri4I,1711
100
111
  pysdmx/io/xml/sdmx21/writer/__init__.py,sha256=QQGFAss26njCC4eKYxhBcI9LYm5NHuJaAJGKCrIrL80,31
101
112
  pysdmx/io/xml/sdmx21/writer/error.py,sha256=0wkX7K_n2oZNkOKg_zpl9Id82qP72Lqof-T-ZLGoZ1M,353
102
- pysdmx/io/xml/sdmx21/writer/generic.py,sha256=I5PQCJvoRMHtbr7i2h27NinW4-to6x6jB0ZNIAh9r9g,15722
113
+ pysdmx/io/xml/sdmx21/writer/generic.py,sha256=eir14yUVXIgCrh-ZM6zVOCcwQWsYLfUYh21UdzPtJp8,15759
103
114
  pysdmx/io/xml/sdmx21/writer/structure.py,sha256=S3qoNgXxrakn2V4NLdL5U5mAA16XisI0PpJDuxqalFE,2084
104
115
  pysdmx/io/xml/sdmx21/writer/structure_specific.py,sha256=iXc1J-RzoKyRznvgGgdTSeUfyqZLouI8CtSq2YhGBWI,2877
105
116
  pysdmx/io/xml/sdmx30/__init__.py,sha256=8BScJFEgLy8DoUreu2RBUtxjGjKyClkKBI_Qtarbk-Y,38
@@ -120,13 +131,13 @@ pysdmx/io/xml/utils.py,sha256=ljrocQwPTYycg3I68sqYI5pF8qukNccSCMM9Xf_Tag0,583
120
131
  pysdmx/model/__base.py,sha256=H5OpCpi6fGxB30vFn-lCstTczSdOB4YJiBynThovQs4,13810
121
132
  pysdmx/model/__init__.py,sha256=gmY8uGK0_SK9Ca5TqtYJqPSXvO9godlDKu2rhYouPSU,4984
122
133
  pysdmx/model/category.py,sha256=WWWysaTdlcU8KZpQyZgbZkrOelNVCGOfVUk_APJxm-w,6031
123
- pysdmx/model/code.py,sha256=KEG2D74UHbZuOplSrztLWCNTzFTOg22imRe_eQvqAM8,12600
134
+ pysdmx/model/code.py,sha256=Wu6rEXeZf_XA0aBrDXgN-3yvySAHH7SAjrWliFlmC24,12799
124
135
  pysdmx/model/concept.py,sha256=mQfqJdtWc10WdTKX_Mw7Znw65cN3QO-kCar9MWYeWO4,9645
125
- pysdmx/model/dataflow.py,sha256=gcpPJnyl0FI4mtk52VvPsPU4msFw67AiM0MaV1nsyiE,22972
136
+ pysdmx/model/dataflow.py,sha256=RDuL3GMhfMR5Dn1bTb4saWhn5v6igcJSKZ4d7ip7WPw,23887
126
137
  pysdmx/model/dataset.py,sha256=Lbr7tYonGHD3NZUD-M9hK2puaEAluOVPG2DbkOohzMM,4861
127
138
  pysdmx/model/gds.py,sha256=QrnmI8Hn--C95gGXCeUeWwhn-Ur7DuT08Cg7oPJIEVI,4976
128
- pysdmx/model/map.py,sha256=IYoxKYpt0-9kYAgU24wryrSchR-lrc3NMacI5Vt5las,17213
129
- pysdmx/model/message.py,sha256=hO-kxYTxt19lhx4xIIQE8RiLjz6peZK6CabFzlo5DRs,14469
139
+ pysdmx/model/map.py,sha256=vMRfhNUuKBAgJPYrqBCkGYfV6CIzbIr1gPPkYj1Z-aU,17529
140
+ pysdmx/model/message.py,sha256=OWbsHC4w8Qt__cleuKCzd3Y4oKUDv2OJjw7kzwuAG5Q,14773
130
141
  pysdmx/model/metadata.py,sha256=EwElZZ8oewpuaEDDWM9ZV95Xvklcq333qxqPwoUqmXU,7653
131
142
  pysdmx/model/organisation.py,sha256=k6ZQ_O4l7174Y8tr-nnMnsUL0q0O8Rw3q4mIWmJUh2A,4706
132
143
  pysdmx/model/submission.py,sha256=iMQSvt-BYuDrqPEBcjw_wWNp74Vsx2OnEj3tnkth0Z8,833
@@ -134,15 +145,16 @@ pysdmx/model/vtl.py,sha256=k7WIb89876xKlf7k0R9sgZ1VVlRrIkbV7FzvMFZn8e0,6985
134
145
  pysdmx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
146
  pysdmx/toolkit/__init__.py,sha256=yBRw4FXQH_RUJgF6vwZscNwCVBt-FMwslJEfDKa7eXo,26
136
147
  pysdmx/toolkit/pd/__init__.py,sha256=3JoCZHamJR4mZfLt9GmaznLlG_YilmY0hAhuW5COQC8,3138
148
+ pysdmx/toolkit/pd/_data_utils.py,sha256=_aF2AnN_TY1UuZenxQiFAlFAAnfh8bB5DBEt6uJkd1k,3305
137
149
  pysdmx/toolkit/vtl/__init__.py,sha256=nVwtISeFiT4tr2gNjb2A-P_IRAdqv6Mn7EOgFkaRleg,216
138
- pysdmx/toolkit/vtl/_validations.py,sha256=seDf83sodg9Jn7Y-L4vo2Zmfqyh_ivBLdH7tz1DjyO4,5677
150
+ pysdmx/toolkit/vtl/_validations.py,sha256=Djc5hHpj79SksvnAA0vL5EnpsDCdQ_BmB6zsr7Ze9Eg,5639
139
151
  pysdmx/toolkit/vtl/script_generation.py,sha256=YOP_-MMcIdDIHYa8HIMuVCN9N-S9CQD8bH5xpF1kc2E,3235
140
152
  pysdmx/toolkit/vtl/validation.py,sha256=UieJUYwxkw9McHZwixKFQdgYKFsgFwFo5XCLIIDcr7Q,3594
141
153
  pysdmx/util/__init__.py,sha256=m_XWRAmVJ7F6ai4Ckrj_YuPbhg3cJZAXeZrEThrL88k,3997
142
154
  pysdmx/util/_date_pattern_map.py,sha256=IS1qONwVHbTBNIFCT0Rqbijj2a9mYvs7onXSK6GeQAQ,1620
143
155
  pysdmx/util/_model_utils.py,sha256=d0XY8cnxvviQtkJJInVik7LWeuqX-eb4-zikFortL58,2335
144
156
  pysdmx/util/_net_utils.py,sha256=nOTz_x3FgFrwKh42_J70IqYXz9duQkMFJWtejZXcLHs,1326
145
- pysdmx-1.5.2.dist-info/LICENSE,sha256=3XTNDPtv2RxDUNkQzn9MIWit2u7_Ob5daMLEq-4pBJs,649
146
- pysdmx-1.5.2.dist-info/METADATA,sha256=hHjNyQNC0uUh9cF40kLB4LBRnPRXJ3vqU3iu-BVRbvs,4690
147
- pysdmx-1.5.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
148
- pysdmx-1.5.2.dist-info/RECORD,,
157
+ pysdmx-1.6.0.dist-info/METADATA,sha256=lMABrenHbBZfRuFItDBUNi99bSi1pRmIFm9NuQ78vZc,4712
158
+ pysdmx-1.6.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
159
+ pysdmx-1.6.0.dist-info/licenses/LICENSE,sha256=3XTNDPtv2RxDUNkQzn9MIWit2u7_Ob5daMLEq-4pBJs,649
160
+ pysdmx-1.6.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
2
+ Generator: poetry-core 2.2.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any