sdmxlib 0.22.0__tar.gz → 0.23.0__tar.gz

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 (76) hide show
  1. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/PKG-INFO +1 -1
  2. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/pyproject.toml +1 -1
  3. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/__init__.py +6 -1
  4. sdmxlib-0.23.0/src/sdmxlib/local/__init__.py +6 -0
  5. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/local/_registry.py +3 -3
  6. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/__init__.py +3 -0
  7. sdmxlib-0.23.0/src/sdmxlib/model/hierarchy_query.py +906 -0
  8. sdmxlib-0.23.0/src/sdmxlib/storage/lazy.py +693 -0
  9. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/storage/readers.py +50 -0
  10. sdmxlib-0.22.0/src/sdmxlib/local/__init__.py +0 -6
  11. sdmxlib-0.22.0/src/sdmxlib/storage/lazy.py +0 -333
  12. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/README.md +0 -0
  13. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/__init__.py +0 -0
  14. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/client.py +0 -0
  15. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/federated.py +0 -0
  16. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/filters.py +0 -0
  17. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/policy.py +0 -0
  18. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/providers.py +0 -0
  19. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/query.py +0 -0
  20. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/registry.py +0 -0
  21. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/api/session.py +0 -0
  22. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/catalog.py +0 -0
  23. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/data_store.py +0 -0
  24. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/__init__.py +0 -0
  25. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_csv/__init__.py +0 -0
  26. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_csv/reader.py +0 -0
  27. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_csv/writer.py +0 -0
  28. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_json/__init__.py +0 -0
  29. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_json/metadata.py +0 -0
  30. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_json/reader.py +0 -0
  31. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_json/writer.py +0 -0
  32. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml21/__init__.py +0 -0
  33. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml21/namespaces.py +0 -0
  34. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml21/reader.py +0 -0
  35. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml21/writer.py +0 -0
  36. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml30/__init__.py +0 -0
  37. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml30/metadata.py +0 -0
  38. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml30/namespaces.py +0 -0
  39. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml30/reader.py +0 -0
  40. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/formats/sdmx_ml30/writer.py +0 -0
  41. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/local/_data_store.py +0 -0
  42. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/annotations.py +0 -0
  43. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/base.py +0 -0
  44. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/binding.py +0 -0
  45. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/category.py +0 -0
  46. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/code_query.py +0 -0
  47. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/codelist.py +0 -0
  48. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/collections.py +0 -0
  49. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/concept.py +0 -0
  50. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/constraint.py +0 -0
  51. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/convert.py +0 -0
  52. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/dataflow.py +0 -0
  53. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/dataset.py +0 -0
  54. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/datastructure.py +0 -0
  55. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/expr.py +0 -0
  56. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/hierarchy.py +0 -0
  57. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/in_memory_registry.py +0 -0
  58. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/istring.py +0 -0
  59. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/mapping.py +0 -0
  60. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/message.py +0 -0
  61. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/metadataflow.py +0 -0
  62. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/metadataset.py +0 -0
  63. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/metadatastructure.py +0 -0
  64. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/organisation.py +0 -0
  65. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/provision.py +0 -0
  66. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/ref.py +0 -0
  67. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/registry.py +0 -0
  68. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/representation.py +0 -0
  69. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/urn.py +0 -0
  70. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/model/validation.py +0 -0
  71. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/polars.py +0 -0
  72. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/py.typed +0 -0
  73. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/rest.py +0 -0
  74. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/storage/__init__.py +0 -0
  75. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/storage/schema.py +0 -0
  76. {sdmxlib-0.22.0 → sdmxlib-0.23.0}/src/sdmxlib/storage/writers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sdmxlib
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: SDMX structural metadata library for Python
5
5
  Keywords: sdmx,statistics,metadata,datastructure
6
6
  Author: gabrielgellner
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sdmxlib"
3
- version = "0.22.0"
3
+ version = "0.23.0"
4
4
  description = "SDMX structural metadata library for Python"
5
5
  readme = "README.md"
6
6
  license = { text = "Apache-2.0" }
@@ -9,7 +9,7 @@ from sdmxlib.api.registry import BearerToken, FmrRegistry, RestRegistry
9
9
  from sdmxlib.catalog import DataflowEntry, FederatedCatalog
10
10
  from sdmxlib.data_store import DataStore, SqlRelation
11
11
  from sdmxlib.formats import parse, read, serialize, to_json, to_xml
12
- from sdmxlib.local import LazyCodelist, LocalRegistry
12
+ from sdmxlib.local import LazyCodelist, LazyHierarchy, LocalRegistry
13
13
  from sdmxlib.local._data_store import DuckDBDataStore
14
14
  from sdmxlib.rest import ComponentFilter, parse_components
15
15
  from sdmxlib.model.convert import from_dict, to_dict
@@ -89,8 +89,10 @@ from sdmxlib.model import (
89
89
  UnresolvedRef,
90
90
  artefact_urn,
91
91
  code,
92
+ node,
92
93
  validate_binding,
93
94
  )
95
+ from sdmxlib.model.hierarchy_query import HierarchyNodeQuery
94
96
 
95
97
  __all__ = [
96
98
  "Agency",
@@ -145,6 +147,7 @@ __all__ = [
145
147
  "Group",
146
148
  "HierarchicalCode",
147
149
  "Hierarchy",
150
+ "HierarchyNodeQuery",
148
151
  "InMemoryRegistry",
149
152
  "InternationalString",
150
153
  "ItemExpr",
@@ -152,6 +155,7 @@ __all__ = [
152
155
  "ItemPredicate",
153
156
  "KeyValue",
154
157
  "LazyCodelist",
158
+ "LazyHierarchy",
155
159
  "Level",
156
160
  "LocalRegistry",
157
161
  "Maintainable",
@@ -188,6 +192,7 @@ __all__ = [
188
192
  "dim",
189
193
  "from_dict",
190
194
  "item",
195
+ "node",
191
196
  "parse",
192
197
  "parse_components",
193
198
  "read",
@@ -0,0 +1,6 @@
1
+ """Local persistent SDMX artefact store backed by DuckDB."""
2
+
3
+ from sdmxlib.local._registry import LocalRegistry
4
+ from sdmxlib.storage.lazy import LazyCodelist, LazyHierarchy
5
+
6
+ __all__ = ["LazyCodelist", "LazyHierarchy", "LocalRegistry"]
@@ -38,7 +38,7 @@ from sdmxlib.model.ref import Ref
38
38
  from sdmxlib.model.registry import InMemoryRegistry
39
39
  from sdmxlib.model.urn import SdmxUrn
40
40
  from sdmxlib.storage import readers, writers
41
- from sdmxlib.storage.lazy import LazyCodelist
41
+ from sdmxlib.storage.lazy import LazyCodelist, LazyHierarchy
42
42
  from sdmxlib.storage.readers import _TYPE_REGISTRY
43
43
  from sdmxlib.storage.schema import (
44
44
  SCHEMA_VERSION,
@@ -170,7 +170,7 @@ class LocalRegistry:
170
170
  result = readers.get_artefact(self._cursor, str(urn), eager=eager)
171
171
  if result is None:
172
172
  return None
173
- if not isinstance(result, LazyCodelist):
173
+ if not isinstance(result, (LazyCodelist, LazyHierarchy)):
174
174
  self._resolve_refs(result, set())
175
175
  return result # type: ignore[return-value]
176
176
 
@@ -178,7 +178,7 @@ class LocalRegistry:
178
178
  """All artefacts of the given Python type."""
179
179
  results = readers.get_all(self._cursor, artefact_type)
180
180
  for r in results:
181
- if not isinstance(r, LazyCodelist):
181
+ if not isinstance(r, (LazyCodelist, LazyHierarchy)):
182
182
  self._resolve_refs(r, set())
183
183
  return results # type: ignore[return-value]
184
184
 
@@ -28,6 +28,7 @@ from sdmxlib.model.mapping import (
28
28
  )
29
29
  from sdmxlib.model.codelist import Code, Codelist
30
30
  from sdmxlib.model.code_query import CodeQuery, code
31
+ from sdmxlib.model.hierarchy_query import HierarchyNodeQuery, node
31
32
  from sdmxlib.model.collections import ArtefactList, ItemList, Maintainable
32
33
  from sdmxlib.model.expr import ItemExpr, ItemPredicate, item
33
34
  from sdmxlib.model.concept import Concept, ConceptScheme
@@ -103,6 +104,7 @@ __all__ = [
103
104
  "Group",
104
105
  "HierarchicalCode",
105
106
  "Hierarchy",
107
+ "HierarchyNodeQuery",
106
108
  "InMemoryRegistry",
107
109
  "InternationalString",
108
110
  "ItemExpr",
@@ -139,6 +141,7 @@ __all__ = [
139
141
  "code",
140
142
  "from_dict",
141
143
  "item",
144
+ "node",
142
145
  "to_dict",
143
146
  "validate",
144
147
  "validate_binding",