dapla-toolbelt-metadata 0.6.5__tar.gz → 0.6.6__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.
Potentially problematic release.
This version of dapla-toolbelt-metadata might be problematic. Click here for more details.
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/PKG-INFO +1 -1
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/pyproject.toml +1 -1
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/core.py +15 -7
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/config.py +0 -18
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/constants.py +0 -2
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/files.py +8 -68
- dapla_toolbelt_metadata-0.6.5/src/dapla_metadata/variable_definitions/_utils/descriptions.py +0 -89
- dapla_toolbelt_metadata-0.6.5/src/dapla_metadata/variable_definitions/resources/vardef_model_descriptions_nb.yaml +0 -109
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/LICENSE +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/README.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/config.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/enums.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/py.typed +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/dapla/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/dapla/user_info.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/code_list.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/dapla_dataset_path_info.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/dataset_parser.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/external_sources/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/external_sources/external_sources.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/model_backwards_compatibility.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/model_validation.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/py.typed +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/statistic_subject_mapping.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/utility/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/utility/constants.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/utility/enums.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/utility/utils.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/standards/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/standards/name_validator.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/standards/standard_validators.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/standards/utils/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/standards/utils/constants.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/FILES +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/VERSION +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator-ignore +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/README.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/data_migration_api.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/draft_variable_definitions_api.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/patches_api.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/validity_periods_api.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/variable_definitions_api.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_client.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_response.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/configuration.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/CompleteResponse.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Contact.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DataMigrationApi.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Draft.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DraftVariableDefinitionsApi.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/LanguageStringType.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Owner.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Patch.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PatchesApi.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PublicApi.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/SupportedLanguages.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/UpdateDraft.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriod.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriodsApi.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableDefinitionsApi.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableStatus.md +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/complete_response.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/contact.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/draft.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/language_string_type.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/owner.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/patch.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/problem.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/update_draft.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/validity_period.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/variable_status.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/py.typed +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_generated/vardef_client/rest.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/__init__.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/_client.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/template_files.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/_utils/variable_definition_files.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/exceptions.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/vardef.py +0 -0
- {dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/variable_definitions/variable_definition.py +0 -0
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/core.py
RENAMED
|
@@ -171,6 +171,21 @@ class Datadoc:
|
|
|
171
171
|
):
|
|
172
172
|
extracted_metadata = self._extract_metadata_from_dataset(self.dataset_path)
|
|
173
173
|
|
|
174
|
+
if extracted_metadata is not None:
|
|
175
|
+
existing_file_path = self._get_existing_file_path(extracted_metadata)
|
|
176
|
+
if (
|
|
177
|
+
self.dataset_path
|
|
178
|
+
and existing_file_path is not None
|
|
179
|
+
and extracted_metadata is not None
|
|
180
|
+
and existing_metadata is not None
|
|
181
|
+
):
|
|
182
|
+
self.dataset_consistency_status = self._check_dataset_consistency(
|
|
183
|
+
self.dataset_path,
|
|
184
|
+
Path(existing_file_path),
|
|
185
|
+
extracted_metadata,
|
|
186
|
+
existing_metadata,
|
|
187
|
+
)
|
|
188
|
+
|
|
174
189
|
if (
|
|
175
190
|
self.dataset_path
|
|
176
191
|
and self.explicitly_defined_metadata_document
|
|
@@ -179,13 +194,6 @@ class Datadoc:
|
|
|
179
194
|
and extracted_metadata is not None
|
|
180
195
|
and existing_metadata is not None
|
|
181
196
|
):
|
|
182
|
-
existing_file_path = self._get_existing_file_path(extracted_metadata)
|
|
183
|
-
self.dataset_consistency_status = self._check_dataset_consistency(
|
|
184
|
-
self.dataset_path,
|
|
185
|
-
Path(existing_file_path),
|
|
186
|
-
extracted_metadata,
|
|
187
|
-
existing_metadata,
|
|
188
|
-
)
|
|
189
197
|
self._check_ready_to_merge(
|
|
190
198
|
self.dataset_consistency_status,
|
|
191
199
|
errors_as_warnings=self.errors_as_warnings,
|
|
@@ -9,24 +9,6 @@ from dapla_metadata.variable_definitions._generated.vardef_client.configuration
|
|
|
9
9
|
|
|
10
10
|
VARDEF_HOST_TEST = "https://metadata.intern.test.ssb.no"
|
|
11
11
|
WORKSPACE_DIR = "WORKSPACE_DIR"
|
|
12
|
-
VARDEF_DESCRIPTIONS_FILE_PATH = "VARDEF_DESCRIPTIONS_FILE_PATH"
|
|
13
|
-
VARDEF_DEFAULT_DESCRIPTION_PATH = (
|
|
14
|
-
"variable_definitions/resources/vardef_model_descriptions_nb.yaml"
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def get_descriptions_path() -> str:
|
|
19
|
-
"""Get the relative file path from the repo root to the Norwegian descriptions.
|
|
20
|
-
|
|
21
|
-
First checks the `VARDEF_DESCRIPTIONS_FILE_PATH` environment variable; if not set, returns a default path.
|
|
22
|
-
|
|
23
|
-
Returns:
|
|
24
|
-
str: The file path to the descriptions.
|
|
25
|
-
"""
|
|
26
|
-
return (
|
|
27
|
-
get_config_item(VARDEF_DESCRIPTIONS_FILE_PATH)
|
|
28
|
-
or VARDEF_DEFAULT_DESCRIPTION_PATH
|
|
29
|
-
)
|
|
30
12
|
|
|
31
13
|
|
|
32
14
|
def get_workspace_dir() -> str | None:
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
import logging
|
|
4
4
|
from datetime import datetime
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from typing import TYPE_CHECKING
|
|
7
|
-
from typing import Any
|
|
8
|
-
from typing import cast
|
|
9
6
|
|
|
10
7
|
import pytz
|
|
11
|
-
from pydantic.config import JsonDict
|
|
12
8
|
from ruamel.yaml import YAML
|
|
13
9
|
from ruamel.yaml import CommentedMap
|
|
14
10
|
from ruamel.yaml import RoundTripRepresenter
|
|
@@ -27,10 +23,7 @@ from dapla_metadata.variable_definitions._utils.constants import DOUBLE_QUOTE_FI
|
|
|
27
23
|
from dapla_metadata.variable_definitions._utils.constants import (
|
|
28
24
|
MACHINE_GENERATED_FIELDS,
|
|
29
25
|
)
|
|
30
|
-
from dapla_metadata.variable_definitions._utils.constants import NORWEGIAN_DESCRIPTIONS
|
|
31
|
-
from dapla_metadata.variable_definitions._utils.constants import OPTIONAL_FIELD
|
|
32
26
|
from dapla_metadata.variable_definitions._utils.constants import OWNER_FIELD_NAME
|
|
33
|
-
from dapla_metadata.variable_definitions._utils.constants import REQUIRED_FIELD
|
|
34
27
|
from dapla_metadata.variable_definitions._utils.constants import (
|
|
35
28
|
TEMPLATE_SECTION_HEADER_MACHINE_GENERATED,
|
|
36
29
|
)
|
|
@@ -47,14 +40,8 @@ from dapla_metadata.variable_definitions._utils.constants import (
|
|
|
47
40
|
VARIABLE_STATUS_FIELD_NAME,
|
|
48
41
|
)
|
|
49
42
|
from dapla_metadata.variable_definitions._utils.constants import YAML_STR_TAG
|
|
50
|
-
from dapla_metadata.variable_definitions._utils.descriptions import (
|
|
51
|
-
apply_norwegian_descriptions_to_model,
|
|
52
|
-
)
|
|
53
43
|
from dapla_metadata.variable_definitions.exceptions import VardefFileError
|
|
54
44
|
|
|
55
|
-
if TYPE_CHECKING:
|
|
56
|
-
from pydantic import JsonValue
|
|
57
|
-
|
|
58
45
|
logger = logging.getLogger(__name__)
|
|
59
46
|
|
|
60
47
|
|
|
@@ -119,41 +106,6 @@ def _get_variable_definitions_dir():
|
|
|
119
106
|
return folder_path
|
|
120
107
|
|
|
121
108
|
|
|
122
|
-
def _set_field_requirement(field_name: str, field: Any) -> str | None:
|
|
123
|
-
"""Determine the field requirement status."""
|
|
124
|
-
if field_name not in MACHINE_GENERATED_FIELDS:
|
|
125
|
-
if field.is_required() or field_name == VARIABLE_STATUS_FIELD_NAME:
|
|
126
|
-
return REQUIRED_FIELD
|
|
127
|
-
return OPTIONAL_FIELD
|
|
128
|
-
return None
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def _populate_commented_map(
|
|
132
|
-
field_name: str,
|
|
133
|
-
value: str,
|
|
134
|
-
commented_map: CommentedMap,
|
|
135
|
-
model_instance: CompleteResponse,
|
|
136
|
-
) -> None:
|
|
137
|
-
"""Add data to a CommentedMap."""
|
|
138
|
-
commented_map[field_name] = value
|
|
139
|
-
field = type(model_instance).model_fields[field_name]
|
|
140
|
-
description: JsonValue = cast(
|
|
141
|
-
JsonDict,
|
|
142
|
-
field.json_schema_extra,
|
|
143
|
-
)[NORWEGIAN_DESCRIPTIONS]
|
|
144
|
-
field_requirement: str | None = _set_field_requirement(field_name, field)
|
|
145
|
-
if description is not None:
|
|
146
|
-
new_description = (
|
|
147
|
-
("\n" + field_requirement + "\n" + str(description))
|
|
148
|
-
if field_requirement
|
|
149
|
-
else ("\n" + str(description))
|
|
150
|
-
)
|
|
151
|
-
commented_map.yaml_set_comment_before_after_key(
|
|
152
|
-
field_name,
|
|
153
|
-
before=new_description,
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
|
|
157
109
|
def _validate_and_create_directory(custom_directory: Path) -> Path:
|
|
158
110
|
"""Ensure that the given path is a valid directory, creating it if necessary.
|
|
159
111
|
|
|
@@ -290,9 +242,9 @@ def _model_to_yaml_with_comments(
|
|
|
290
242
|
start_comment: str,
|
|
291
243
|
custom_directory: Path | None = None,
|
|
292
244
|
) -> Path:
|
|
293
|
-
"""Convert a model instance to a structured YAML file
|
|
245
|
+
"""Convert a model instance to a structured YAML file.
|
|
294
246
|
|
|
295
|
-
|
|
247
|
+
Organizes fields into sections with headers and saves
|
|
296
248
|
the YAML file with a structured format and timestamped filename.
|
|
297
249
|
|
|
298
250
|
Args:
|
|
@@ -307,13 +259,6 @@ def _model_to_yaml_with_comments(
|
|
|
307
259
|
yaml = YAML()
|
|
308
260
|
configure_yaml(yaml)
|
|
309
261
|
|
|
310
|
-
from dapla_metadata.variable_definitions.variable_definition import (
|
|
311
|
-
VariableDefinition,
|
|
312
|
-
)
|
|
313
|
-
|
|
314
|
-
# Apply new fields to model
|
|
315
|
-
apply_norwegian_descriptions_to_model(VariableDefinition)
|
|
316
|
-
|
|
317
262
|
# Convert Pydantic model instance to dictionary
|
|
318
263
|
data = model_instance.model_dump(
|
|
319
264
|
serialize_as_any=True,
|
|
@@ -326,21 +271,16 @@ def _model_to_yaml_with_comments(
|
|
|
326
271
|
status_map = CommentedMap()
|
|
327
272
|
owner_map = CommentedMap()
|
|
328
273
|
|
|
329
|
-
# Loop through all fields in the model and
|
|
274
|
+
# Loop through all fields in the model and assigne to commented maps
|
|
330
275
|
for field_name, value in data.items():
|
|
331
276
|
if field_name == VARIABLE_STATUS_FIELD_NAME:
|
|
332
|
-
|
|
277
|
+
status_map[field_name] = value
|
|
333
278
|
elif field_name == OWNER_FIELD_NAME:
|
|
334
|
-
|
|
279
|
+
owner_map[field_name] = value
|
|
335
280
|
elif field_name in MACHINE_GENERATED_FIELDS:
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
machine_generated_map,
|
|
340
|
-
model_instance,
|
|
341
|
-
)
|
|
342
|
-
elif field_name not in {VARIABLE_STATUS_FIELD_NAME, OWNER_FIELD_NAME}:
|
|
343
|
-
_populate_commented_map(field_name, value, commented_map, model_instance)
|
|
281
|
+
machine_generated_map[field_name] = value
|
|
282
|
+
else:
|
|
283
|
+
commented_map[field_name] = value
|
|
344
284
|
|
|
345
285
|
base_path = (
|
|
346
286
|
_get_variable_definitions_dir()
|
dapla_toolbelt_metadata-0.6.5/src/dapla_metadata/variable_definitions/_utils/descriptions.py
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"""Utilities for dynamically adding extra fields to Pydantic models, specifically Norwegian descriptions."""
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import TYPE_CHECKING
|
|
6
|
-
from typing import cast
|
|
7
|
-
|
|
8
|
-
import ruamel.yaml
|
|
9
|
-
from pydantic import BaseModel
|
|
10
|
-
from pydantic import Field
|
|
11
|
-
|
|
12
|
-
from dapla_metadata.variable_definitions._utils.config import get_descriptions_path
|
|
13
|
-
|
|
14
|
-
if TYPE_CHECKING:
|
|
15
|
-
from pydantic.config import JsonDict
|
|
16
|
-
|
|
17
|
-
logger = logging.getLogger(__name__)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def get_package_root() -> Path:
|
|
21
|
-
"""Get an absolute Path to the root of the package (dapla_metadata)."""
|
|
22
|
-
number_of_directories_up_from_descriptions_file = 2
|
|
23
|
-
return (
|
|
24
|
-
Path(__file__)
|
|
25
|
-
.resolve()
|
|
26
|
-
.parents[number_of_directories_up_from_descriptions_file]
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def load_descriptions(file_path: Path) -> dict:
|
|
31
|
-
"""Load and return the contents of a YAML file as a dictionary.
|
|
32
|
-
|
|
33
|
-
Args:
|
|
34
|
-
file_path (Path): Path to the YAML file.
|
|
35
|
-
|
|
36
|
-
Returns:
|
|
37
|
-
dict: Parsed contents of the YAML file.
|
|
38
|
-
"""
|
|
39
|
-
with Path.open(file_path, encoding="utf-8") as f:
|
|
40
|
-
return ruamel.yaml.YAML().load(f)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def apply_norwegian_descriptions_to_model(
|
|
44
|
-
model: type[BaseModel],
|
|
45
|
-
) -> None:
|
|
46
|
-
"""Add Norwegian descriptions to the fields of a Pydantic model.
|
|
47
|
-
|
|
48
|
-
This function globally modifies the model fields by inserting a Norwegian description
|
|
49
|
-
from a predefined dictionary. If a field does not have a corresponding
|
|
50
|
-
Norwegian description, a default message is used.
|
|
51
|
-
|
|
52
|
-
Args:
|
|
53
|
-
model (BaseModel): A Pydantic model instance to be updated.
|
|
54
|
-
|
|
55
|
-
Returns:
|
|
56
|
-
None: The function modifies the model in place.
|
|
57
|
-
"""
|
|
58
|
-
new_fields = {}
|
|
59
|
-
|
|
60
|
-
descriptions = load_descriptions(
|
|
61
|
-
get_package_root() / get_descriptions_path(),
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
for field_name, field_info in model.model_fields.items():
|
|
65
|
-
new_description: str = descriptions.get(
|
|
66
|
-
field_name,
|
|
67
|
-
f"No description in norwegian found for {field_name}",
|
|
68
|
-
)
|
|
69
|
-
if "No description in norwegian found" in new_description:
|
|
70
|
-
logger.warning("Missing description for %s", field_name)
|
|
71
|
-
else:
|
|
72
|
-
logger.debug("Field %s: %s", field_name, new_description)
|
|
73
|
-
|
|
74
|
-
new_fields[field_name] = Field( # type: ignore[call-overload]
|
|
75
|
-
default=field_info.default,
|
|
76
|
-
alias=field_info.alias,
|
|
77
|
-
title=field_info.title,
|
|
78
|
-
description=field_info.description,
|
|
79
|
-
json_schema_extra=cast(
|
|
80
|
-
"JsonDict",
|
|
81
|
-
{
|
|
82
|
-
"norwegian_description": new_description,
|
|
83
|
-
"annotation": field_info.annotation,
|
|
84
|
-
},
|
|
85
|
-
),
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
model.model_fields.update(new_fields) # Apply changes
|
|
89
|
-
model.model_rebuild()
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# --- Variabel definisjoner ---
|
|
2
|
-
# ref: https://statistics-norway.atlassian.net/wiki/spaces/MPD/pages/3009839199/VarDef+-+Krav+til+dokumentasjon+av+variabler
|
|
3
|
-
name: |
|
|
4
|
-
Variabelens navn. Dette skal ikke være en mer “teknisk” forkortelse, men et navn som er forståelig for mennesker.
|
|
5
|
-
-------------------------
|
|
6
|
-
>>> EKSEMPEL:
|
|
7
|
-
name:
|
|
8
|
-
nb: |-
|
|
9
|
-
Lønnsinntekter
|
|
10
|
-
short_name: |
|
|
11
|
-
Dette er variabelens kortnavn, som kan være en mer “teknisk” forkortelse, f.eks. wlonn (kortnavnet til Lønnsinntekter). Kortnavnet til en variabel i Vardef skal være unikt.
|
|
12
|
-
Kravet til kortnavnet er at det kan inneholde a-z (kun små bokstaver), 0-9 og _ (understrek). Minimumslengden på kortnavnet er 2 tegn.
|
|
13
|
-
Bokstavene “æ”, “ø” og “å” kan ikke brukes. Disse anbefales erstattet med hhv. “ae”, “oe” og “aa"
|
|
14
|
-
definition: |
|
|
15
|
-
En definisjon skal beskrive hva variabelen betyr og være så kort og presis som mulig. Mer utfyllende opplysninger kan legges i Merknad-feltet.
|
|
16
|
-
-------------------------
|
|
17
|
-
>>> EKSEMPEL:
|
|
18
|
-
definition:
|
|
19
|
-
nb: |-
|
|
20
|
-
Yrkesinntekter, kapitalinntekter, skattepliktige og skattefrie overføringer, i løpet av kalenderåret.
|
|
21
|
-
classification_reference: |
|
|
22
|
-
ID av en klassifikasjon eller kodeliste fra KLASS som beskriver verdiene variabelen kan anta.
|
|
23
|
-
For eksempel vil variabelen 'Sivilstand' ha klassifikasjon 'Standard for sivilstand' (kan vises på https://www.ssb.no/klass/klassifikasjoner/19 ) som har ID 19.
|
|
24
|
-
-------------------------
|
|
25
|
-
>>> EKSEMPEL:
|
|
26
|
-
classification_reference: "19"
|
|
27
|
-
unit_types: |
|
|
28
|
-
Enhetstyper - enhetene som beskrives av denne variabelen. Variabelen “sivilstand” vil f.eks. ha enhetstypen person,
|
|
29
|
-
mens f.eks. “Produsentpris for tjenester” vil ha både foretak og bedrift som enhetstyper siden variabelen kan beskrive begge.
|
|
30
|
-
Verdier skal være koder fra: https://www.ssb.no/klass/klassifikasjoner/702.
|
|
31
|
-
-------------------------
|
|
32
|
-
>>> EKSEMPEL:
|
|
33
|
-
unit_types:
|
|
34
|
-
- "20"
|
|
35
|
-
subject_fields: |
|
|
36
|
-
Statistikkområder som variabelen brukes innenfor. For eksempel tilhører variabelen “Sivilstand” statistikkområdet “Befolkning”.
|
|
37
|
-
Verdier skal være koder fra https://www.ssb.no/klass/klassifikasjoner/618.
|
|
38
|
-
-------------------------
|
|
39
|
-
>>> EKSEMPEL:
|
|
40
|
-
subject_fields:
|
|
41
|
-
- "bf"
|
|
42
|
-
- "be"
|
|
43
|
-
contains_special_categories_of_personal_data: |
|
|
44
|
-
Viser om variabelen inneholder spesielt sensitive personopplysninger.
|
|
45
|
-
-------------------------
|
|
46
|
-
>>> EKSEMPEL:
|
|
47
|
-
contains_special_categories_of_personal_data: true
|
|
48
|
-
measurement_type: |
|
|
49
|
-
Måletype som en kvantitativ variabelen tilhører, f.eks. valuta, areal osv.
|
|
50
|
-
Verdien skal være en kode fra: https://www.ssb.no/klass/klassifikasjoner/303
|
|
51
|
-
-------------------------
|
|
52
|
-
>>> EKSEMPEL:
|
|
53
|
-
measurement_type: "03"
|
|
54
|
-
valid_from: |
|
|
55
|
-
Datoen variabeldefinisjonen er gyldig f.o.m.
|
|
56
|
-
-------------------------
|
|
57
|
-
>>> EKSEMPEL:
|
|
58
|
-
valid_from: 1999-01-30
|
|
59
|
-
valid_until: |
|
|
60
|
-
Datoen variabeldefinisjonens var gyldig t.o.m. Settes hvis definisjonen skal erstattet av en ny definisjon (med en ny gyldighetsperiode), eller variabelen ikke lenger skal brukes.
|
|
61
|
-
-------------------------
|
|
62
|
-
>>> EKSEMPEL:
|
|
63
|
-
valid_until: 2024-10-23
|
|
64
|
-
external_reference_uri: |
|
|
65
|
-
En peker (URI) til ekstern definisjon/dokumentasjon, f.eks. ei webside som er relevant for variabelen.
|
|
66
|
-
-----------------------------------------------------
|
|
67
|
-
>>> EKSEMPEL:
|
|
68
|
-
external_reference_uri: "https://www.landbruksdirektoratet.com"
|
|
69
|
-
comment: |
|
|
70
|
-
Her kan en sette inn eventuelle tilleggsopplysninger som ikke hører hjemme i selve definisjonen.
|
|
71
|
-
Variabelen “Landbakgrunn” har f.eks. merknaden “Fra og med 1.1.2003 ble definisjon endret til også å trekke inn besteforeldrenes fødeland”.
|
|
72
|
-
-----------------------------------------------------------------------------------------------
|
|
73
|
-
>>> EKSEMPEL:
|
|
74
|
-
comment:
|
|
75
|
-
nb: |-
|
|
76
|
-
Fra og med 1.1.2003 ble definisjon endret til også å trekke inn besteforeldrenes fødeland.
|
|
77
|
-
related_variable_definition_uris: |
|
|
78
|
-
Her kan en legge inn URIer til andre variabler som er relevante. Eksempelvis er variabelen “Inntekt etter skatt” en beregnet variabel der “Yrkesinntekter” og “Kapitalinntekter” inngår i beregningen.
|
|
79
|
-
En kan da legge inn deres URI-er i dette feltet.
|
|
80
|
-
-------------------------
|
|
81
|
-
>>> EKSEMPEL:
|
|
82
|
-
related_variable_definition_uris:
|
|
83
|
-
- "https://example.com/"
|
|
84
|
-
contact: |
|
|
85
|
-
Her dokumenterer en navn og epost for person eller gruppe som kan svare på spørsmål.
|
|
86
|
-
-------------------------
|
|
87
|
-
>>> EKSEMPEL:
|
|
88
|
-
contact:
|
|
89
|
-
title:
|
|
90
|
-
nb: |-
|
|
91
|
-
Seksjonsleder
|
|
92
|
-
email: leder@ssb.no
|
|
93
|
-
variable_status: |
|
|
94
|
-
Livssyklus for variabelen.
|
|
95
|
-
id: |
|
|
96
|
-
Unik SSB identifikator for variabeldefinisjonen. Denne blir maskingenerert.
|
|
97
|
-
Variabeldefinisjoner med ulike gyldighetsperioder har samme ID (og samme kortnavn).
|
|
98
|
-
patch_id: |
|
|
99
|
-
Løpenummer som identifiserer en patch, endring, for en variabeldefinisjon.
|
|
100
|
-
owner: |
|
|
101
|
-
Eier av variabelen dvs. ansvarlig Dapla-team (statistikk-team) og informasjon om tilgangsstyringsgrupper. Team-tilhørighet settes automatisk til det samme som teamtilhørigheten til den som oppretter variabelen.
|
|
102
|
-
created_at: |
|
|
103
|
-
Tidsstempelet da variabelen ble opprettet. Denne er maskingenerert.
|
|
104
|
-
created_by: |
|
|
105
|
-
Personen som har opprettet variabelen. Dette er maskingenerert.
|
|
106
|
-
last_updated_at: |
|
|
107
|
-
Tidsstempelet da variabelen sist ble oppdatert. Denne er maskingenerert.
|
|
108
|
-
last_updated_by: |
|
|
109
|
-
Personen som sist utførte en endring i variabelen. Denne er maskingenerert.
|
|
File without changes
|
|
File without changes
|
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/config.py
RENAMED
|
File without changes
|
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/enums.py
RENAMED
|
File without changes
|
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/_shared/py.typed
RENAMED
|
File without changes
|
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/dapla/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dapla_toolbelt_metadata-0.6.5 → dapla_toolbelt_metadata-0.6.6}/src/dapla_metadata/datasets/py.typed
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|