dapla-toolbelt-metadata 0.9.3__tar.gz → 0.9.4__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 (239) hide show
  1. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/PKG-INFO +1 -1
  2. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/pyproject.toml +1 -1
  3. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/model_validation.py +28 -19
  4. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/utility/constants.py +2 -2
  5. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/utility/utils.py +56 -0
  6. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_validators.py +16 -0
  7. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.cookiecutter.json +0 -0
  8. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.cruft.json +0 -0
  9. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.editorconfig +0 -0
  10. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.gitattributes +0 -0
  11. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  12. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  13. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/dependabot.yml +0 -0
  14. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/labels.yml +0 -0
  15. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/release-drafter.yml +0 -0
  16. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/workflows/constraints.txt +0 -0
  17. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/workflows/docs.yml +0 -0
  18. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/workflows/labeler.yml +0 -0
  19. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/workflows/release.yml +0 -0
  20. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.github/workflows/tests.yml +0 -0
  21. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.gitignore +0 -0
  22. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.pre-commit-config.yaml +0 -0
  23. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/.vscode/settings.json +0 -0
  24. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/CODEOWNERS +0 -0
  25. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/CODE_OF_CONDUCT.md +0 -0
  26. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/CONTRIBUTING.md +0 -0
  27. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/LICENSE +0 -0
  28. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/Makefile +0 -0
  29. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/README.md +0 -0
  30. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/SECURITY.md +0 -0
  31. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/backstage.yaml +0 -0
  32. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/bin/__init__.py +0 -0
  33. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/bin/openapi_generate_post_process.sh +0 -0
  34. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/bin/upgrade_metadata_file.py +0 -0
  35. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/datasets/create_metadata_for_new_dataset.ipynb +0 -0
  36. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/datasets/create_metadata_for_new_period.ipynb +0 -0
  37. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/datasets/resources/sykefratot/klargjorte_data/person_testdata_p2021_v1__DOC.json +0 -0
  38. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/standards/navnestandard.ipynb +0 -0
  39. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/les_variabeldefinisjon.ipynb +0 -0
  40. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/les_variabeldefinisjoner.ipynb +0 -0
  41. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/migrer_variabeldefinisjoner.ipynb +0 -0
  42. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/ny_gyldighetsperiode_variabeldefinisjon.ipynb +0 -0
  43. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/ny_variabeldefinisjon.ipynb +0 -0
  44. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/publiser_variabeldefinisjon_eksternt.ipynb +0 -0
  45. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/publiser_variabeldefinisjon_internt.ipynb +0 -0
  46. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/rediger_publisert_variabeldefinisjon.ipynb +0 -0
  47. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/rediger_utkast_variabeldefinisjon.ipynb +0 -0
  48. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/reserver_kortnavn.ipynb +0 -0
  49. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/sjekk_kortnavn_variabeldefinisjon.ipynb +0 -0
  50. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/sjekk_migrerte_variabeldefinisjoner.ipynb +0 -0
  51. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/demo/variable_definitions/slett_utkast_variabeldefinisjon.ipynb +0 -0
  52. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/Makefile +0 -0
  53. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/codeofconduct.md +0 -0
  54. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/conf.py +0 -0
  55. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/contributing.md +0 -0
  56. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/index.md +0 -0
  57. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/license.md +0 -0
  58. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/make.bat +0 -0
  59. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/reference.md +0 -0
  60. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/templates/package.rst_t +0 -0
  61. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/docs/vardef_client.md +0 -0
  62. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/noxfile.py +0 -0
  63. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/schemas/jsonschema/complete-response-schema.json +0 -0
  64. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/sonar-project.properties +0 -0
  65. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/__init__.py +0 -0
  66. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/_shared/__init__.py +0 -0
  67. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/_shared/config.py +0 -0
  68. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/_shared/enums.py +0 -0
  69. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/_shared/py.typed +0 -0
  70. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/dapla/__init__.py +0 -0
  71. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/dapla/user_info.py +0 -0
  72. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/__init__.py +0 -0
  73. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/_merge.py +0 -0
  74. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/code_list.py +0 -0
  75. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/compatibility/__init__.py +0 -0
  76. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/compatibility/_handlers.py +0 -0
  77. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/compatibility/_utils.py +0 -0
  78. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/compatibility/model_backwards_compatibility.py +0 -0
  79. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/core.py +0 -0
  80. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/dapla_dataset_path_info.py +0 -0
  81. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/dataset_parser.py +0 -0
  82. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/external_sources/__init__.py +0 -0
  83. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/external_sources/external_sources.py +0 -0
  84. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/py.typed +0 -0
  85. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/statistic_subject_mapping.py +0 -0
  86. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/utility/__init__.py +0 -0
  87. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/datasets/utility/enums.py +0 -0
  88. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/standards/__init__.py +0 -0
  89. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/standards/name_validator.py +0 -0
  90. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/standards/standard_validators.py +0 -0
  91. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/standards/utils/__init__.py +0 -0
  92. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/standards/utils/constants.py +0 -0
  93. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/__init__.py +0 -0
  94. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/FILES +0 -0
  95. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/VERSION +0 -0
  96. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator-ignore +0 -0
  97. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/README.md +0 -0
  98. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/__init__.py +0 -0
  99. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/__init__.py +0 -0
  100. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/__init__.py +0 -0
  101. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/data_migration_api.py +0 -0
  102. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/draft_variable_definitions_api.py +0 -0
  103. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/patches_api.py +0 -0
  104. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/validity_periods_api.py +0 -0
  105. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/variable_definitions_api.py +0 -0
  106. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_client.py +0 -0
  107. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_response.py +0 -0
  108. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/configuration.py +0 -0
  109. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/CompleteResponse.md +0 -0
  110. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Contact.md +0 -0
  111. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DataMigrationApi.md +0 -0
  112. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Draft.md +0 -0
  113. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DraftVariableDefinitionsApi.md +0 -0
  114. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/LanguageStringType.md +0 -0
  115. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Owner.md +0 -0
  116. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Patch.md +0 -0
  117. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PatchesApi.md +0 -0
  118. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PublicApi.md +0 -0
  119. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/SupportedLanguages.md +0 -0
  120. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/UpdateDraft.md +0 -0
  121. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriod.md +0 -0
  122. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriodsApi.md +0 -0
  123. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableDefinitionsApi.md +0 -0
  124. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableStatus.md +0 -0
  125. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py +0 -0
  126. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/__init__.py +0 -0
  127. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/complete_response.py +0 -0
  128. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/contact.py +0 -0
  129. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/draft.py +0 -0
  130. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/get_vardok_vardef_mapping_by_id200_response.py +0 -0
  131. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/language_string_type.py +0 -0
  132. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/owner.py +0 -0
  133. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/patch.py +0 -0
  134. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/problem.py +0 -0
  135. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/update_draft.py +0 -0
  136. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/validity_period.py +0 -0
  137. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/vardok_id_response.py +0 -0
  138. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/vardok_vardef_id_pair_response.py +0 -0
  139. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/variable_status.py +0 -0
  140. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/py.typed +0 -0
  141. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_generated/vardef_client/rest.py +0 -0
  142. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/__init__.py +0 -0
  143. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/_client.py +0 -0
  144. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/config.py +0 -0
  145. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/constants.py +0 -0
  146. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/files.py +0 -0
  147. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/template_files.py +0 -0
  148. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/_utils/variable_definition_files.py +0 -0
  149. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/exceptions.py +0 -0
  150. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/vardef.py +0 -0
  151. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/vardok_id.py +0 -0
  152. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/vardok_vardef_id_pair.py +0 -0
  153. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/src/dapla_metadata/variable_definitions/variable_definition.py +0 -0
  154. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/__init__.py +0 -0
  155. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/conftest.py +0 -0
  156. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/dapla/__init__.py +0 -0
  157. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/dapla/test_user_info.py +0 -0
  158. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/__init__.py +0 -0
  159. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/conftest.py +0 -0
  160. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/constants.py +0 -0
  161. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/code_list/code_list.csv +0 -0
  162. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/code_list/code_list_en.csv +0 -0
  163. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/code_list/code_list_nb.csv +0 -0
  164. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/code_list/code_list_nn.csv +0 -0
  165. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/code_list/empty.csv +0 -0
  166. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/code_list/no_code.csv +0 -0
  167. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/fewer_variables_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  168. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/ifpn/klargjorte_data/person_testdata_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  169. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/person_data.csv +0 -0
  170. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/person_data_v1.parquet +0 -0
  171. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/person_data_v1.parquet.gzip +0 -0
  172. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/person_testdata_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  173. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/datasets/sasdata.sas7bdat +0 -0
  174. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/README.md +0 -0
  175. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v0_1_1/person_data_v1__DOC.json +0 -0
  176. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v1_0_0/person_data_v1__DOC.json +0 -0
  177. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v2_1_0/person_data_v1__DOC.json +0 -0
  178. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v2_2_0/person_data_v1__DOC.json +0 -0
  179. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v3_1_0/person_data_v1__DOC.json +0 -0
  180. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v3_2_0/person_data_v1__DOC.json +0 -0
  181. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v3_3_0/person_data_v1__DOC.json +0 -0
  182. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v4_0_0/person_data_v1__DOC.json +0 -0
  183. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v5_0_1/person_data_v1__DOC.json +0 -0
  184. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/compatibility/v6_0_0/person_data_v1__DOC.json +0 -0
  185. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/fewer_variables_p2020-12-31_p2020-12-31_v1__DOC.json +0 -0
  186. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/invalid_id_field/person_data_v1__DOC.json +0 -0
  187. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/person_data_v1__DOC.json +0 -0
  188. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/person_testdata_p2020-12-31_p2020-12-31_v1__DOC.json +0 -0
  189. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/pseudo/dataset_and_pseudo/no_pseudo_v4_0_0_person_data_v1__DOC.json +0 -0
  190. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/pseudo/dataset_and_pseudo/person_data_v1__DOC.json +0 -0
  191. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/pseudo/dataset_and_pseudo/v4_0_0_person_data_v1__DOC.json +0 -0
  192. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/pseudo/pseudo/person_data_v1__DOC.json +0 -0
  193. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/pseudo/pseudo_missing_variables/person_data_v1__DOC.json +0 -0
  194. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/valid_id_field/person_data_v1__DOC.json +0 -0
  195. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/existing_metadata_file/valid_variable_id_field/person_data_v1__DOC.json +0 -0
  196. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/klargjorte_data/person_testdata_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  197. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/klargjorte_data/person_testdata_p2021-12-31_p2021-12-31_v1__DOC.json +0 -0
  198. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/statistical_subject_structure/empty.xml +0 -0
  199. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/statistical_subject_structure/extract_secondary_subject.xml +0 -0
  200. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/statistical_subject_structure/missing_language.xml +0 -0
  201. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/resources/statistical_subject_structure/simple.xml +0 -0
  202. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_code_list.py +0 -0
  203. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_dapla_dataset_path_info.py +0 -0
  204. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_datadoc_metadata.py +0 -0
  205. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_dataset_consistency.py +0 -0
  206. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_dataset_parser.py +0 -0
  207. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_model_backwards_compatibility.py +0 -0
  208. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_pseudonymization.py +0 -0
  209. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_statistic_subject_mapping.py +0 -0
  210. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/datasets/test_utils.py +0 -0
  211. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/standards/__init__.py +0 -0
  212. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/standards/conftest.py +0 -0
  213. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/standards/test_check_naming_standard.py +0 -0
  214. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/utils/__init__.py +0 -0
  215. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/utils/constants.py +0 -0
  216. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/utils/microcks_testcontainer.py +0 -0
  217. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/__init__.py +0 -0
  218. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/conftest.py +0 -0
  219. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/constants.py +0 -0
  220. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/resources/openapi/variable-definitions-internal.yml +0 -0
  221. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/resources/variable_definition_editing_files/classification_reference.yaml +0 -0
  222. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/resources/variable_definition_editing_files/date_and_definition.yaml +0 -0
  223. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/resources/variable_definition_editing_files/variable_definition_landbak_wypvb3wd_2025-05-02T10-06-20.yaml +0 -0
  224. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/resources/variable_definition_editing_files/variable_definition_var_test_wypvb3wd_2025-09-18T14-19-28.yaml +0 -0
  225. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/test_config.py +0 -0
  226. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/test_template_files.py +0 -0
  227. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/test_vardef.py +0 -0
  228. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/test_variable_definition.py +0 -0
  229. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/test_variable_definition_files.py +0 -0
  230. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/vardef_client/__init__.py +0 -0
  231. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/vardef_client/api/__init__.py +0 -0
  232. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/vardef_client/api/test_happy_path.py +0 -0
  233. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/vardef_client/models/__init__.py +0 -0
  234. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/vardef_client/models/test_models_instantiation.py +0 -0
  235. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/tests/variable_definitions/vardef_client/test_exceptions.py +0 -0
  236. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/uv.lock +0 -0
  237. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/vardef-maintenance/README.md +0 -0
  238. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/vardef-maintenance/vardef-maintenance.toml +0 -0
  239. {dapla_toolbelt_metadata-0.9.3 → dapla_toolbelt_metadata-0.9.4}/vardef-maintenance/vardef_client_init.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dapla-toolbelt-metadata
3
- Version: 0.9.3
3
+ Version: 0.9.4
4
4
  Summary: Dapla Toolbelt Metadata
5
5
  Project-URL: homepage, https://github.com/statisticsnorway/dapla-toolbelt-metadata
6
6
  Project-URL: repository, https://github.com/statisticsnorway/dapla-toolbelt-metadata
@@ -2,7 +2,7 @@
2
2
  name = "dapla-toolbelt-metadata"
3
3
  description = "Dapla Toolbelt Metadata"
4
4
  license = "MIT"
5
- version = "0.9.3"
5
+ version = "0.9.4"
6
6
  classifiers = ["Development Status :: 4 - Beta"]
7
7
  readme = "README.md"
8
8
  authors = [{ name = "Statistics Norway", email = "metadata@ssb.no" }]
@@ -13,20 +13,19 @@ from typing_extensions import Self
13
13
 
14
14
  from dapla_metadata.datasets.utility.constants import DATE_VALIDATION_MESSAGE
15
15
  from dapla_metadata.datasets.utility.constants import NUM_OBLIGATORY_DATASET_FIELDS
16
- from dapla_metadata.datasets.utility.constants import NUM_OBLIGATORY_VARIABLES_FIELDS
17
16
  from dapla_metadata.datasets.utility.constants import OBLIGATORY_METADATA_WARNING
18
17
  from dapla_metadata.datasets.utility.utils import get_missing_obligatory_dataset_fields
19
18
  from dapla_metadata.datasets.utility.utils import (
20
19
  get_missing_obligatory_variables_fields,
21
20
  )
21
+ from dapla_metadata.datasets.utility.utils import (
22
+ get_missing_obligatory_variables_pseudo_fields,
23
+ )
22
24
  from dapla_metadata.datasets.utility.utils import get_timestamp_now
23
25
  from dapla_metadata.datasets.utility.utils import incorrect_date_order
24
26
  from dapla_metadata.datasets.utility.utils import (
25
27
  num_obligatory_dataset_fields_completed,
26
28
  )
27
- from dapla_metadata.datasets.utility.utils import (
28
- num_obligatory_variables_fields_completed,
29
- )
30
29
  from dapla_metadata.datasets.utility.utils import set_variables_inherit_from_dataset
31
30
 
32
31
  if TYPE_CHECKING:
@@ -146,21 +145,31 @@ class ValidateDatadocMetadata(model.DatadocMetadata):
146
145
  ObligatoryVariableWarning: If not all obligatory variable metadata fields
147
146
  are filled in.
148
147
  """
149
- if self.variables is not None and num_obligatory_variables_fields_completed(
150
- self.variables,
151
- ) != (NUM_OBLIGATORY_VARIABLES_FIELDS * len(self.variables)):
152
- warnings.warn(
153
- f"{OBLIGATORY_METADATA_WARNING} {get_missing_obligatory_variables_fields(self.variables)}",
154
- ObligatoryVariableWarning,
155
- stacklevel=2,
156
- )
157
- logger.warning(
158
- "Type warning: %s.%s %s",
159
- ObligatoryVariableWarning,
160
- OBLIGATORY_METADATA_WARNING,
161
- get_missing_obligatory_variables_fields(self.variables),
162
- )
163
-
148
+ if self.variables is not None:
149
+ missing_fields_dict = {}
150
+ for d in get_missing_obligatory_variables_fields(self.variables):
151
+ for var, fields in d.items():
152
+ missing_fields_dict[var] = fields.copy()
153
+
154
+ for d in get_missing_obligatory_variables_pseudo_fields(self.variables):
155
+ for var, fields in d.items():
156
+ if var in missing_fields_dict:
157
+ missing_fields_dict[var].extend(fields)
158
+ else:
159
+ missing_fields_dict[var] = fields.copy()
160
+
161
+ missing_fields = [
162
+ {var: fields} for var, fields in missing_fields_dict.items()
163
+ ]
164
+ if missing_fields:
165
+ message = f"{OBLIGATORY_METADATA_WARNING} {missing_fields}"
166
+ warnings.warn(message, ObligatoryVariableWarning, stacklevel=2)
167
+ logger.warning(
168
+ "Type warning: %s.%s %s",
169
+ ObligatoryVariableWarning,
170
+ OBLIGATORY_METADATA_WARNING,
171
+ missing_fields,
172
+ )
164
173
  return self
165
174
 
166
175
 
@@ -47,9 +47,9 @@ OBLIGATORY_VARIABLES_METADATA_IDENTIFIERS = [
47
47
  "temporality_type",
48
48
  ]
49
49
 
50
- OBLIGATORY_VARIABLES_PESUODONYMIZATION_IDENTIFIERS = [
50
+ OBLIGATORY_VARIABLES_PSEUDONYMIZATION_IDENTIFIERS = [
51
51
  "encryption_algorithm",
52
- "encryption_key_refrence",
52
+ "encryption_key_reference",
53
53
  ]
54
54
 
55
55
 
@@ -36,6 +36,9 @@ from dapla_metadata.datasets.utility.constants import (
36
36
  from dapla_metadata.datasets.utility.constants import (
37
37
  OBLIGATORY_VARIABLES_METADATA_IDENTIFIERS_MULTILANGUAGE,
38
38
  )
39
+ from dapla_metadata.datasets.utility.constants import (
40
+ OBLIGATORY_VARIABLES_PSEUDONYMIZATION_IDENTIFIERS,
41
+ )
39
42
  from dapla_metadata.datasets.utility.constants import PAPIS_ENCRYPTION_KEY_REFERENCE
40
43
  from dapla_metadata.datasets.utility.constants import PAPIS_STABLE_IDENTIFIER_TYPE
41
44
  from dapla_metadata.datasets.utility.enums import EncryptionAlgorithm
@@ -367,6 +370,25 @@ def num_obligatory_variable_fields_completed(
367
370
  return NUM_OBLIGATORY_VARIABLES_FIELDS - len(missing_metadata)
368
371
 
369
372
 
373
+ def num_obligatory_pseudo_fields_missing(
374
+ variables: list[all_optional_model.Variable],
375
+ ) -> int:
376
+ """Counts the number of obligatory pseudonymization fields are missing.
377
+
378
+ Args:
379
+ variables: The variables to count obligatory fields for.
380
+
381
+ Returns:
382
+ The number of obligatory pseudonymization fields that are missing.
383
+ """
384
+ return sum(
385
+ getattr(v.pseudonymization, field, None) is None
386
+ for v in variables
387
+ if v.pseudonymization is not None
388
+ for field in OBLIGATORY_VARIABLES_PSEUDONYMIZATION_IDENTIFIERS
389
+ )
390
+
391
+
370
392
  def get_missing_obligatory_dataset_fields(
371
393
  dataset: DatasetType,
372
394
  ) -> list:
@@ -433,6 +455,40 @@ def get_missing_obligatory_variables_fields(variables: list) -> list[dict]:
433
455
  return [item for item in missing_variables_fields if next(iter(item.values()))]
434
456
 
435
457
 
458
+ def get_missing_obligatory_variables_pseudo_fields(
459
+ variables: list[all_optional_model.Variable],
460
+ ) -> list[dict]:
461
+ """Identify obligatory variable pseudonymization fields that are missing values for each variable.
462
+
463
+ This function checks for obligatory fields that are directly missing
464
+ (i.e., set to `None`).
465
+
466
+ Args:
467
+ variables: A list of variable objects to check for missing obligatory pseudonymization fields.
468
+
469
+ Returns:
470
+ A list of dictionaries with variable short names as keys and list of missing
471
+ obligatory variable pseudonymization fields as values. This includes:
472
+ - Fields that are directly `None` and are listed as obligatory metadata.
473
+ """
474
+ return [
475
+ {
476
+ v.short_name: [
477
+ key
478
+ for key, value in v.pseudonymization.model_dump().items()
479
+ if _is_missing_metadata(
480
+ key,
481
+ value,
482
+ OBLIGATORY_VARIABLES_PSEUDONYMIZATION_IDENTIFIERS,
483
+ [],
484
+ )
485
+ ]
486
+ }
487
+ for v in variables
488
+ if v.pseudonymization is not None
489
+ ]
490
+
491
+
436
492
  def running_in_notebook() -> bool:
437
493
  """Return True if running in Jupyter Notebook."""
438
494
  try:
@@ -263,3 +263,19 @@ def test_obligatory_metadata_variables_warning_name(metadata: Datadoc):
263
263
  ) as record2:
264
264
  metadata.write_metadata_document()
265
265
  assert variable_with_name not in str(record2[1].message)
266
+
267
+
268
+ def test_obligatory_metadata_variables_warning_pseudonymization(metadata: Datadoc):
269
+ metadata.variables_lookup["pers_id"].pseudonymization = model.Pseudonymization(
270
+ pseudonymization_time="2022-10-07T07:35:01Z",
271
+ stable_identifier_type="",
272
+ stable_identifier_version="",
273
+ encryption_algorithm=None,
274
+ encryption_algorithm_parameters=[],
275
+ )
276
+ with warnings.catch_warnings(record=True) as w:
277
+ warnings.simplefilter("always")
278
+ metadata.write_metadata_document()
279
+ if issubclass(w[1].category, ObligatoryVariableWarning):
280
+ missing_obligatory_dataset = str(w[1].message)
281
+ assert "encryption_algorithm" in str(missing_obligatory_dataset)