dapla-toolbelt-metadata 0.8.1__tar.gz → 0.8.2__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.

Files changed (92) hide show
  1. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/PKG-INFO +1 -1
  2. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/pyproject.toml +1 -1
  3. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/constants.py +4 -0
  4. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/exceptions.py +59 -0
  5. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/variable_definition.py +6 -0
  6. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/LICENSE +0 -0
  7. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/README.md +0 -0
  8. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/__init__.py +0 -0
  9. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/_shared/__init__.py +0 -0
  10. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/_shared/config.py +0 -0
  11. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/_shared/enums.py +0 -0
  12. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/_shared/py.typed +0 -0
  13. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/dapla/__init__.py +0 -0
  14. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/dapla/user_info.py +0 -0
  15. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/__init__.py +0 -0
  16. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/code_list.py +0 -0
  17. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/core.py +0 -0
  18. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/dapla_dataset_path_info.py +0 -0
  19. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/dataset_parser.py +0 -0
  20. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/external_sources/__init__.py +0 -0
  21. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/external_sources/external_sources.py +0 -0
  22. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/model_backwards_compatibility.py +0 -0
  23. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/model_validation.py +0 -0
  24. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/py.typed +0 -0
  25. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/statistic_subject_mapping.py +0 -0
  26. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/utility/__init__.py +0 -0
  27. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/utility/constants.py +0 -0
  28. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/utility/enums.py +0 -0
  29. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/datasets/utility/utils.py +0 -0
  30. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/standards/__init__.py +0 -0
  31. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/standards/name_validator.py +0 -0
  32. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/standards/standard_validators.py +0 -0
  33. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/standards/utils/__init__.py +0 -0
  34. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/standards/utils/constants.py +0 -0
  35. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/__init__.py +0 -0
  36. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/FILES +0 -0
  37. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/VERSION +0 -0
  38. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator-ignore +0 -0
  39. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/README.md +0 -0
  40. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/__init__.py +0 -0
  41. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/__init__.py +0 -0
  42. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/__init__.py +0 -0
  43. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/data_migration_api.py +0 -0
  44. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/draft_variable_definitions_api.py +0 -0
  45. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/patches_api.py +0 -0
  46. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/validity_periods_api.py +0 -0
  47. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/variable_definitions_api.py +0 -0
  48. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_client.py +0 -0
  49. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_response.py +0 -0
  50. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/configuration.py +0 -0
  51. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/CompleteResponse.md +0 -0
  52. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Contact.md +0 -0
  53. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DataMigrationApi.md +0 -0
  54. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Draft.md +0 -0
  55. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DraftVariableDefinitionsApi.md +0 -0
  56. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/LanguageStringType.md +0 -0
  57. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Owner.md +0 -0
  58. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Patch.md +0 -0
  59. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PatchesApi.md +0 -0
  60. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PublicApi.md +0 -0
  61. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/SupportedLanguages.md +0 -0
  62. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/UpdateDraft.md +0 -0
  63. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriod.md +0 -0
  64. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriodsApi.md +0 -0
  65. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableDefinitionsApi.md +0 -0
  66. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableStatus.md +0 -0
  67. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py +0 -0
  68. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/__init__.py +0 -0
  69. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/complete_response.py +0 -0
  70. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/contact.py +0 -0
  71. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/draft.py +0 -0
  72. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/get_vardok_vardef_mapping_by_id200_response.py +0 -0
  73. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/language_string_type.py +0 -0
  74. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/owner.py +0 -0
  75. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/patch.py +0 -0
  76. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/problem.py +0 -0
  77. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/update_draft.py +0 -0
  78. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/validity_period.py +0 -0
  79. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/vardok_id_response.py +0 -0
  80. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/vardok_vardef_id_pair_response.py +0 -0
  81. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/variable_status.py +0 -0
  82. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/py.typed +0 -0
  83. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_generated/vardef_client/rest.py +0 -0
  84. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/__init__.py +0 -0
  85. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/_client.py +0 -0
  86. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/config.py +0 -0
  87. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/files.py +0 -0
  88. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/template_files.py +0 -0
  89. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/_utils/variable_definition_files.py +0 -0
  90. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/vardef.py +0 -0
  91. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/vardok_id.py +0 -0
  92. {dapla_toolbelt_metadata-0.8.1 → dapla_toolbelt_metadata-0.8.2}/src/dapla_metadata/variable_definitions/vardok_vardef_id_pair.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dapla-toolbelt-metadata
3
- Version: 0.8.1
3
+ Version: 0.8.2
4
4
  Summary: Dapla Toolbelt Metadata
5
5
  License: MIT
6
6
  Author: Team Metadata
@@ -2,7 +2,7 @@
2
2
  name = "dapla-toolbelt-metadata"
3
3
  description = "Dapla Toolbelt Metadata"
4
4
  license = "MIT"
5
- version = "0.8.1"
5
+ version = "0.8.2"
6
6
  dynamic = ["classifiers"]
7
7
  readme = "README.md"
8
8
  authors = [{ name = "Team Metadata", email = "metadata@ssb.no" }]
@@ -60,3 +60,7 @@ DOUBLE_QUOTE_FIELDS = [
60
60
  "id",
61
61
  "last_updated_by",
62
62
  ]
63
+
64
+ PUBLISHING_BLOCKED_ERROR_MESSAGE = "Publishing blocked: Publishing variable definitions is not allowed until further notice."
65
+ VARDEF_PROD_URL = "https://metadata.intern.ssb.no"
66
+ VARDEF_TEST_URL = "https://metadata.intern.test.ssb.no"
@@ -15,6 +15,14 @@ from dapla_metadata.variable_definitions._generated.vardef_client.exceptions imp
15
15
  from dapla_metadata.variable_definitions._generated.vardef_client.exceptions import (
16
16
  UnauthorizedException,
17
17
  )
18
+ from dapla_metadata.variable_definitions._generated.vardef_client.models.variable_status import (
19
+ VariableStatus,
20
+ )
21
+ from dapla_metadata.variable_definitions._utils._client import VardefClient
22
+ from dapla_metadata.variable_definitions._utils.constants import (
23
+ PUBLISHING_BLOCKED_ERROR_MESSAGE,
24
+ )
25
+ from dapla_metadata.variable_definitions._utils.constants import VARDEF_PROD_URL
18
26
 
19
27
  # Use MappingProxyType so the dict is immutable
20
28
  STATUS_EXPLANATIONS: MappingProxyType[HTTPStatus | None, str] = MappingProxyType(
@@ -194,3 +202,54 @@ def vardef_file_error_handler(method): # noqa: ANN201, ANN001
194
202
  raise VardefFileError(msg) from e
195
203
 
196
204
  return _impl
205
+
206
+
207
+ class PublishingBlockedError(RuntimeError):
208
+ """Exception raised when publishing variable definitions is blocked in the production environment."""
209
+
210
+ default_message = PUBLISHING_BLOCKED_ERROR_MESSAGE
211
+
212
+ def __str__(self) -> str:
213
+ """Return the default publishing blocked error message."""
214
+ return self.default_message
215
+
216
+
217
+ def publishing_blocked_error_handler(method): # noqa: ANN201, ANN001
218
+ """Decorator that blocks publishing variable definitions in production.
219
+
220
+ - If the environment is production:
221
+ - If `variable_status` is present in the arguments and set to `PUBLISHED_INTERNAL` or `PUBLISHED_EXTERNAL`,
222
+ publishing is blocked by raising a `PublishingBlockedError`.
223
+ - If `variable_status` is set to `DRAFT`, the method is allowed to proceed.
224
+ - If no arguments are provided, all publishing attempts are blocked.
225
+ """
226
+
227
+ @wraps(method)
228
+ def _impl(*method_args, **method_kwargs): # noqa: ANN002, ANN003
229
+ try:
230
+ client = VardefClient()
231
+ host = client.get_config().host
232
+ except VardefClientError as e:
233
+ msg = f"Failed to get VardefClient config: {e}"
234
+ raise RuntimeError(msg) from e
235
+
236
+ if host == VARDEF_PROD_URL:
237
+ if len(method_args) > 1:
238
+ status = method_args[1].variable_status
239
+ if status == VariableStatus.DRAFT:
240
+ return method(
241
+ *method_args,
242
+ **method_kwargs,
243
+ )
244
+ if status in (
245
+ VariableStatus.PUBLISHED_INTERNAL,
246
+ VariableStatus.PUBLISHED_EXTERNAL,
247
+ ):
248
+ raise PublishingBlockedError
249
+ raise PublishingBlockedError
250
+ return method(
251
+ *method_args,
252
+ **method_kwargs,
253
+ )
254
+
255
+ return _impl
@@ -41,6 +41,9 @@ from dapla_metadata.variable_definitions._utils.variable_definition_files import
41
41
  from dapla_metadata.variable_definitions._utils.variable_definition_files import (
42
42
  create_variable_yaml,
43
43
  )
44
+ from dapla_metadata.variable_definitions.exceptions import (
45
+ publishing_blocked_error_handler,
46
+ )
44
47
  from dapla_metadata.variable_definitions.exceptions import vardef_exception_handler
45
48
  from dapla_metadata.variable_definitions.exceptions import vardef_file_error_handler
46
49
 
@@ -99,6 +102,7 @@ class VariableDefinition(CompleteResponse):
99
102
  )
100
103
  ]
101
104
 
105
+ @publishing_blocked_error_handler
102
106
  @vardef_exception_handler
103
107
  def update_draft(
104
108
  self,
@@ -340,6 +344,7 @@ class VariableDefinition(CompleteResponse):
340
344
  ),
341
345
  )
342
346
 
347
+ @publishing_blocked_error_handler
343
348
  def publish_internal(self) -> "VariableDefinition":
344
349
  """Publish this variable definition internally."""
345
350
  if self.variable_status != VariableStatus.DRAFT.name:
@@ -358,6 +363,7 @@ class VariableDefinition(CompleteResponse):
358
363
  )
359
364
  return update
360
365
 
366
+ @publishing_blocked_error_handler
361
367
  def publish_external(self) -> "VariableDefinition":
362
368
  """Publish this variable definition externally."""
363
369
  if self.variable_status == VariableStatus.PUBLISHED_EXTERNAL.name: