dapla-toolbelt-metadata 0.9.4__tar.gz → 0.9.5__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 (241) hide show
  1. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/PKG-INFO +1 -1
  2. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/pyproject.toml +1 -1
  3. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/core.py +15 -13
  4. dapla_toolbelt_metadata-0.9.5/src/dapla_metadata/datasets/utility/urn.py +129 -0
  5. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/utility/utils.py +1 -1
  6. dapla_toolbelt_metadata-0.9.5/tests/datasets/test_urn.py +69 -0
  7. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/uv.lock +1 -1
  8. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/vardef-maintenance/vardef-maintenance.toml +1 -1
  9. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/vardef-maintenance/vardef_client_init.sh +1 -1
  10. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.cookiecutter.json +0 -0
  11. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.cruft.json +0 -0
  12. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.editorconfig +0 -0
  13. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.gitattributes +0 -0
  14. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  15. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  16. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/dependabot.yml +0 -0
  17. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/labels.yml +0 -0
  18. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/release-drafter.yml +0 -0
  19. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/workflows/constraints.txt +0 -0
  20. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/workflows/docs.yml +0 -0
  21. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/workflows/labeler.yml +0 -0
  22. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/workflows/release.yml +0 -0
  23. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.github/workflows/tests.yml +0 -0
  24. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.gitignore +0 -0
  25. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.pre-commit-config.yaml +0 -0
  26. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/.vscode/settings.json +0 -0
  27. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/CODEOWNERS +0 -0
  28. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/CODE_OF_CONDUCT.md +0 -0
  29. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/CONTRIBUTING.md +0 -0
  30. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/LICENSE +0 -0
  31. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/Makefile +0 -0
  32. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/README.md +0 -0
  33. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/SECURITY.md +0 -0
  34. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/backstage.yaml +0 -0
  35. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/bin/__init__.py +0 -0
  36. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/bin/openapi_generate_post_process.sh +0 -0
  37. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/bin/upgrade_metadata_file.py +0 -0
  38. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/datasets/create_metadata_for_new_dataset.ipynb +0 -0
  39. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/datasets/create_metadata_for_new_period.ipynb +0 -0
  40. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/datasets/resources/sykefratot/klargjorte_data/person_testdata_p2021_v1__DOC.json +0 -0
  41. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/standards/navnestandard.ipynb +0 -0
  42. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/les_variabeldefinisjon.ipynb +0 -0
  43. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/les_variabeldefinisjoner.ipynb +0 -0
  44. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/migrer_variabeldefinisjoner.ipynb +0 -0
  45. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/ny_gyldighetsperiode_variabeldefinisjon.ipynb +0 -0
  46. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/ny_variabeldefinisjon.ipynb +0 -0
  47. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/publiser_variabeldefinisjon_eksternt.ipynb +0 -0
  48. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/publiser_variabeldefinisjon_internt.ipynb +0 -0
  49. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/rediger_publisert_variabeldefinisjon.ipynb +0 -0
  50. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/rediger_utkast_variabeldefinisjon.ipynb +0 -0
  51. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/reserver_kortnavn.ipynb +0 -0
  52. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/sjekk_kortnavn_variabeldefinisjon.ipynb +0 -0
  53. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/sjekk_migrerte_variabeldefinisjoner.ipynb +0 -0
  54. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/demo/variable_definitions/slett_utkast_variabeldefinisjon.ipynb +0 -0
  55. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/Makefile +0 -0
  56. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/codeofconduct.md +0 -0
  57. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/conf.py +0 -0
  58. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/contributing.md +0 -0
  59. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/index.md +0 -0
  60. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/license.md +0 -0
  61. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/make.bat +0 -0
  62. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/reference.md +0 -0
  63. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/templates/package.rst_t +0 -0
  64. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/docs/vardef_client.md +0 -0
  65. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/noxfile.py +0 -0
  66. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/schemas/jsonschema/complete-response-schema.json +0 -0
  67. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/sonar-project.properties +0 -0
  68. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/__init__.py +0 -0
  69. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/_shared/__init__.py +0 -0
  70. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/_shared/config.py +0 -0
  71. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/_shared/enums.py +0 -0
  72. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/_shared/py.typed +0 -0
  73. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/dapla/__init__.py +0 -0
  74. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/dapla/user_info.py +0 -0
  75. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/__init__.py +0 -0
  76. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/_merge.py +0 -0
  77. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/code_list.py +0 -0
  78. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/compatibility/__init__.py +0 -0
  79. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/compatibility/_handlers.py +0 -0
  80. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/compatibility/_utils.py +0 -0
  81. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/compatibility/model_backwards_compatibility.py +0 -0
  82. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/dapla_dataset_path_info.py +0 -0
  83. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/dataset_parser.py +0 -0
  84. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/external_sources/__init__.py +0 -0
  85. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/external_sources/external_sources.py +0 -0
  86. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/model_validation.py +0 -0
  87. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/py.typed +0 -0
  88. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/statistic_subject_mapping.py +0 -0
  89. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/utility/__init__.py +0 -0
  90. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/utility/constants.py +0 -0
  91. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/datasets/utility/enums.py +0 -0
  92. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/standards/__init__.py +0 -0
  93. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/standards/name_validator.py +0 -0
  94. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/standards/standard_validators.py +0 -0
  95. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/standards/utils/__init__.py +0 -0
  96. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/standards/utils/constants.py +0 -0
  97. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/__init__.py +0 -0
  98. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/FILES +0 -0
  99. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator/VERSION +0 -0
  100. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/.openapi-generator-ignore +0 -0
  101. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/README.md +0 -0
  102. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/__init__.py +0 -0
  103. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/__init__.py +0 -0
  104. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/__init__.py +0 -0
  105. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/data_migration_api.py +0 -0
  106. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/draft_variable_definitions_api.py +0 -0
  107. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/patches_api.py +0 -0
  108. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/validity_periods_api.py +0 -0
  109. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api/variable_definitions_api.py +0 -0
  110. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_client.py +0 -0
  111. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/api_response.py +0 -0
  112. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/configuration.py +0 -0
  113. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/CompleteResponse.md +0 -0
  114. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Contact.md +0 -0
  115. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DataMigrationApi.md +0 -0
  116. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Draft.md +0 -0
  117. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/DraftVariableDefinitionsApi.md +0 -0
  118. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/LanguageStringType.md +0 -0
  119. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Owner.md +0 -0
  120. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/Patch.md +0 -0
  121. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PatchesApi.md +0 -0
  122. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/PublicApi.md +0 -0
  123. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/SupportedLanguages.md +0 -0
  124. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/UpdateDraft.md +0 -0
  125. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriod.md +0 -0
  126. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriodsApi.md +0 -0
  127. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableDefinitionsApi.md +0 -0
  128. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableStatus.md +0 -0
  129. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py +0 -0
  130. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/__init__.py +0 -0
  131. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/complete_response.py +0 -0
  132. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/contact.py +0 -0
  133. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/draft.py +0 -0
  134. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/get_vardok_vardef_mapping_by_id200_response.py +0 -0
  135. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/language_string_type.py +0 -0
  136. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/owner.py +0 -0
  137. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/patch.py +0 -0
  138. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/problem.py +0 -0
  139. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/update_draft.py +0 -0
  140. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/validity_period.py +0 -0
  141. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/vardok_id_response.py +0 -0
  142. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/vardok_vardef_id_pair_response.py +0 -0
  143. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/models/variable_status.py +0 -0
  144. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/py.typed +0 -0
  145. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_generated/vardef_client/rest.py +0 -0
  146. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/__init__.py +0 -0
  147. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/_client.py +0 -0
  148. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/config.py +0 -0
  149. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/constants.py +0 -0
  150. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/files.py +0 -0
  151. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/template_files.py +0 -0
  152. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/_utils/variable_definition_files.py +0 -0
  153. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/exceptions.py +0 -0
  154. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/vardef.py +0 -0
  155. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/vardok_id.py +0 -0
  156. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/vardok_vardef_id_pair.py +0 -0
  157. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/src/dapla_metadata/variable_definitions/variable_definition.py +0 -0
  158. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/__init__.py +0 -0
  159. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/conftest.py +0 -0
  160. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/dapla/__init__.py +0 -0
  161. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/dapla/test_user_info.py +0 -0
  162. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/__init__.py +0 -0
  163. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/conftest.py +0 -0
  164. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/constants.py +0 -0
  165. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/code_list/code_list.csv +0 -0
  166. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/code_list/code_list_en.csv +0 -0
  167. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/code_list/code_list_nb.csv +0 -0
  168. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/code_list/code_list_nn.csv +0 -0
  169. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/code_list/empty.csv +0 -0
  170. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/code_list/no_code.csv +0 -0
  171. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/fewer_variables_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  172. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/ifpn/klargjorte_data/person_testdata_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  173. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/person_data.csv +0 -0
  174. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/person_data_v1.parquet +0 -0
  175. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/person_data_v1.parquet.gzip +0 -0
  176. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/person_testdata_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  177. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/datasets/sasdata.sas7bdat +0 -0
  178. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/README.md +0 -0
  179. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v0_1_1/person_data_v1__DOC.json +0 -0
  180. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v1_0_0/person_data_v1__DOC.json +0 -0
  181. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v2_1_0/person_data_v1__DOC.json +0 -0
  182. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v2_2_0/person_data_v1__DOC.json +0 -0
  183. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v3_1_0/person_data_v1__DOC.json +0 -0
  184. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v3_2_0/person_data_v1__DOC.json +0 -0
  185. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v3_3_0/person_data_v1__DOC.json +0 -0
  186. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v4_0_0/person_data_v1__DOC.json +0 -0
  187. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v5_0_1/person_data_v1__DOC.json +0 -0
  188. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/compatibility/v6_0_0/person_data_v1__DOC.json +0 -0
  189. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/fewer_variables_p2020-12-31_p2020-12-31_v1__DOC.json +0 -0
  190. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/invalid_id_field/person_data_v1__DOC.json +0 -0
  191. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/person_data_v1__DOC.json +0 -0
  192. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/person_testdata_p2020-12-31_p2020-12-31_v1__DOC.json +0 -0
  193. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/pseudo/dataset_and_pseudo/no_pseudo_v4_0_0_person_data_v1__DOC.json +0 -0
  194. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/pseudo/dataset_and_pseudo/person_data_v1__DOC.json +0 -0
  195. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/pseudo/dataset_and_pseudo/v4_0_0_person_data_v1__DOC.json +0 -0
  196. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/pseudo/pseudo/person_data_v1__DOC.json +0 -0
  197. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/pseudo/pseudo_missing_variables/person_data_v1__DOC.json +0 -0
  198. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/valid_id_field/person_data_v1__DOC.json +0 -0
  199. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/existing_metadata_file/valid_variable_id_field/person_data_v1__DOC.json +0 -0
  200. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/klargjorte_data/person_testdata_p2021-12-31_p2021-12-31_v1.parquet +0 -0
  201. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/klargjorte_data/person_testdata_p2021-12-31_p2021-12-31_v1__DOC.json +0 -0
  202. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/statistical_subject_structure/empty.xml +0 -0
  203. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/statistical_subject_structure/extract_secondary_subject.xml +0 -0
  204. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/statistical_subject_structure/missing_language.xml +0 -0
  205. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/resources/statistical_subject_structure/simple.xml +0 -0
  206. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_code_list.py +0 -0
  207. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_dapla_dataset_path_info.py +0 -0
  208. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_datadoc_metadata.py +0 -0
  209. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_dataset_consistency.py +0 -0
  210. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_dataset_parser.py +0 -0
  211. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_model_backwards_compatibility.py +0 -0
  212. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_pseudonymization.py +0 -0
  213. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_statistic_subject_mapping.py +0 -0
  214. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_utils.py +0 -0
  215. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/datasets/test_validators.py +0 -0
  216. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/standards/__init__.py +0 -0
  217. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/standards/conftest.py +0 -0
  218. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/standards/test_check_naming_standard.py +0 -0
  219. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/utils/__init__.py +0 -0
  220. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/utils/constants.py +0 -0
  221. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/utils/microcks_testcontainer.py +0 -0
  222. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/__init__.py +0 -0
  223. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/conftest.py +0 -0
  224. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/constants.py +0 -0
  225. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/resources/openapi/variable-definitions-internal.yml +0 -0
  226. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/resources/variable_definition_editing_files/classification_reference.yaml +0 -0
  227. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/resources/variable_definition_editing_files/date_and_definition.yaml +0 -0
  228. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/resources/variable_definition_editing_files/variable_definition_landbak_wypvb3wd_2025-05-02T10-06-20.yaml +0 -0
  229. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/resources/variable_definition_editing_files/variable_definition_var_test_wypvb3wd_2025-09-18T14-19-28.yaml +0 -0
  230. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/test_config.py +0 -0
  231. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/test_template_files.py +0 -0
  232. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/test_vardef.py +0 -0
  233. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/test_variable_definition.py +0 -0
  234. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/test_variable_definition_files.py +0 -0
  235. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/vardef_client/__init__.py +0 -0
  236. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/vardef_client/api/__init__.py +0 -0
  237. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/vardef_client/api/test_happy_path.py +0 -0
  238. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/vardef_client/models/__init__.py +0 -0
  239. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/vardef_client/models/test_models_instantiation.py +0 -0
  240. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/tests/variable_definitions/vardef_client/test_exceptions.py +0 -0
  241. {dapla_toolbelt_metadata-0.9.4 → dapla_toolbelt_metadata-0.9.5}/vardef-maintenance/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dapla-toolbelt-metadata
3
- Version: 0.9.4
3
+ Version: 0.9.5
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.4"
5
+ version = "0.9.5"
6
6
  classifiers = ["Development Status :: 4 - Beta"]
7
7
  readme = "README.md"
8
8
  authors = [{ name = "Statistics Norway", email = "metadata@ssb.no" }]
@@ -33,7 +33,10 @@ from dapla_metadata.datasets.utility.constants import (
33
33
  from dapla_metadata.datasets.utility.constants import METADATA_DOCUMENT_FILE_SUFFIX
34
34
  from dapla_metadata.datasets.utility.constants import NUM_OBLIGATORY_DATASET_FIELDS
35
35
  from dapla_metadata.datasets.utility.constants import NUM_OBLIGATORY_VARIABLES_FIELDS
36
+ from dapla_metadata.datasets.utility.urn import convert_definition_uris_to_urns
36
37
  from dapla_metadata.datasets.utility.utils import OptionalDatadocMetadataType
38
+ from dapla_metadata.datasets.utility.utils import VariableListType
39
+ from dapla_metadata.datasets.utility.utils import VariableType
37
40
  from dapla_metadata.datasets.utility.utils import calculate_percentage
38
41
  from dapla_metadata.datasets.utility.utils import derive_assessment_from_state
39
42
  from dapla_metadata.datasets.utility.utils import get_timestamp_now
@@ -108,8 +111,8 @@ class Datadoc:
108
111
  self.container: all_optional_model.MetadataContainer | None = None
109
112
  self.dataset_path: pathlib.Path | CloudPath | None = None
110
113
  self.dataset = all_optional_model.Dataset()
111
- self.variables: list = []
112
- self.variables_lookup: dict[str, all_optional_model.Variable] = {}
114
+ self.variables: VariableListType = []
115
+ self.variables_lookup: dict[str, VariableType] = {}
113
116
  self.explicitly_defined_metadata_document = False
114
117
  self.dataset_consistency_status: list[DatasetConsistencyStatus] = []
115
118
  if metadata_document_path:
@@ -204,22 +207,21 @@ class Datadoc:
204
207
  else:
205
208
  self._set_metadata(existing_metadata or extracted_metadata)
206
209
 
207
- set_default_values_variables(self.variables)
208
- set_default_values_dataset(cast("all_optional_model.Dataset", self.dataset))
209
- set_dataset_owner(self.dataset)
210
- self._create_variables_lookup()
211
-
212
210
  def _set_metadata(
213
211
  self,
214
- merged_metadata: OptionalDatadocMetadataType,
212
+ metadata: OptionalDatadocMetadataType,
215
213
  ) -> None:
216
- if not merged_metadata or not (
217
- merged_metadata.dataset and merged_metadata.variables
218
- ):
214
+ if not metadata or not (metadata.dataset and metadata.variables):
219
215
  msg = "Could not read metadata"
220
216
  raise ValueError(msg)
221
- self.dataset = cast("all_optional_model.Dataset", merged_metadata.dataset)
222
- self.variables = merged_metadata.variables
217
+ self.dataset = cast("all_optional_model.Dataset", metadata.dataset)
218
+ self.variables = metadata.variables
219
+
220
+ set_default_values_variables(self.variables)
221
+ set_default_values_dataset(cast("all_optional_model.Dataset", self.dataset))
222
+ set_dataset_owner(self.dataset)
223
+ convert_definition_uris_to_urns(self.variables)
224
+ self._create_variables_lookup()
223
225
 
224
226
  def _create_variables_lookup(self) -> None:
225
227
  self.variables_lookup = {
@@ -0,0 +1,129 @@
1
+ """Validate, parse and render URNs."""
2
+
3
+ import logging
4
+ import re
5
+ from dataclasses import dataclass
6
+ from enum import Enum
7
+ from enum import auto
8
+
9
+ from pydantic import AnyUrl
10
+
11
+ from dapla_metadata.datasets.utility.utils import VariableListType
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ VARDEF_URL_TEMPLATE = "https://{subdomain}.{domain}/variable-definitions"
17
+
18
+
19
+ class SsbNaisDomains(str, Enum):
20
+ """The available domains on SSBs Nais instance."""
21
+
22
+ TEST_EXTERNAL = "test.ssb.no"
23
+ TEST_INTERNAL = "intern.test.ssb.no"
24
+ PROD_EXTERNAL = "ssb.no"
25
+ PROD_INTERNAL = "intern.ssb.no"
26
+
27
+
28
+ class ReferenceUrlTypes(Enum):
29
+ """The general category of the URL.
30
+
31
+ This can be useful to refer to when constructing a URL from a URN for a
32
+ specific context.
33
+ """
34
+
35
+ API = auto()
36
+ FRONTEND = auto()
37
+
38
+
39
+ @dataclass
40
+ class UrnConverter:
41
+ """Converts URLs to URNs and vice versa.
42
+
43
+ Fields:
44
+ urn_base: The format for the URN, up to the identifier.
45
+ id_pattern: A capturing group pattern which matches identifiers for this resource.
46
+ url_bases: The list of all the different URL representations for a resource. There
47
+ will typically be a number of URL representations for a particular resource,
48
+ depending on which system or technology they are accessed through and other
49
+ technical factors. This list defines which concrete URLs can be considered
50
+ equivalent to a URN.
51
+ """
52
+
53
+ urn_base: str
54
+ id_pattern: str
55
+ url_bases: list[tuple[ReferenceUrlTypes, str]]
56
+
57
+ def _extract_id(self, url: str, pattern: re.Pattern[str]) -> str | None:
58
+ if match := pattern.match(url):
59
+ return match.group(1)
60
+ return None
61
+
62
+ def _build_pattern(self, url_base: str) -> re.Pattern[str]:
63
+ return re.compile(f"^{url_base}/{self.id_pattern}")
64
+
65
+ def build_urn(self, identifier: str) -> str:
66
+ """Build a URN for the given identifier."""
67
+ return f"{self.urn_base}:{identifier}"
68
+
69
+ def convert_to_urn(self, url: str | AnyUrl | None) -> str | None:
70
+ """Convert a URL to a generalized URN for that same resource.
71
+
72
+ Args:
73
+ url (str | None): The URL to convert.
74
+
75
+ Returns:
76
+ str | None: The URN or None if it can't be converted.
77
+ """
78
+ if not url:
79
+ return None
80
+
81
+ patterns = (self._build_pattern(url[-1]) for url in self.url_bases)
82
+ matches = (self._extract_id(str(url), p) for p in patterns)
83
+ identifier = next((m for m in matches if m), None)
84
+ if identifier:
85
+ return self.build_urn(identifier)
86
+
87
+ return None
88
+
89
+
90
+ vardef_urn_converter = UrnConverter(
91
+ urn_base="urn:ssb:variable-definition:vardef",
92
+ id_pattern=r"([a-z0-9]{8})",
93
+ url_bases=[
94
+ *[
95
+ (
96
+ ReferenceUrlTypes.API,
97
+ VARDEF_URL_TEMPLATE.format(
98
+ subdomain="metadata", domain=nais_domain.value
99
+ ),
100
+ )
101
+ for nais_domain in SsbNaisDomains
102
+ ],
103
+ *[
104
+ (
105
+ ReferenceUrlTypes.FRONTEND,
106
+ VARDEF_URL_TEMPLATE.format(
107
+ subdomain="catalog", domain=nais_domain.value
108
+ ),
109
+ )
110
+ for nais_domain in SsbNaisDomains
111
+ ],
112
+ ],
113
+ )
114
+
115
+
116
+ def convert_definition_uris_to_urns(variables: VariableListType) -> None:
117
+ """Where definition URIs are recognized URLs, convert them to URNs.
118
+
119
+ Where the value is not a known URL we preserve the value as it is and log an
120
+ ERROR level message.
121
+
122
+ Args:
123
+ variables (VariableListType): The list of variables.
124
+ """
125
+ for v in variables:
126
+ if urn := vardef_urn_converter.convert_to_urn(v.definition_uri):
127
+ v.definition_uri = urn # type: ignore [assignment]
128
+ else:
129
+ logger.error("Could not convert value to URN: %s", v.definition_uri)
@@ -121,7 +121,7 @@ def derive_assessment_from_state(state: DataSetState) -> Assessment:
121
121
  return Assessment.SENSITIVE
122
122
 
123
123
 
124
- def set_default_values_variables(variables: list) -> None:
124
+ def set_default_values_variables(variables: VariableListType) -> None:
125
125
  """Set default values on variables.
126
126
 
127
127
  Args:
@@ -0,0 +1,69 @@
1
+ import logging
2
+
3
+ import datadoc_model.all_optional.model as all_optional_model
4
+ import pytest
5
+
6
+ from dapla_metadata.datasets.core import Datadoc
7
+ from dapla_metadata.datasets.utility.urn import SsbNaisDomains
8
+ from dapla_metadata.datasets.utility.urn import vardef_urn_converter
9
+
10
+ VARIABLE_DEFINITION_URN_TEST_CASES = [
11
+ (None, None),
12
+ *[
13
+ (
14
+ f"https://metadata.{domain.value}/variable-definitions/hd8sks89",
15
+ "urn:ssb:variable-definition:vardef:hd8sks89",
16
+ )
17
+ for domain in SsbNaisDomains
18
+ ],
19
+ *[
20
+ (
21
+ f"https://catalog.{domain.value}/variable-definitions/hd8sks89",
22
+ "urn:ssb:variable-definition:vardef:hd8sks89",
23
+ )
24
+ for domain in SsbNaisDomains
25
+ ],
26
+ ]
27
+
28
+
29
+ @pytest.mark.parametrize(
30
+ ("case", "expected_result"),
31
+ [
32
+ *VARIABLE_DEFINITION_URN_TEST_CASES,
33
+ (
34
+ "https://www.vg.no",
35
+ None,
36
+ ),
37
+ ],
38
+ )
39
+ def test_convert_to_vardef_urn(case: str | None, expected_result: str | None):
40
+ assert vardef_urn_converter.convert_to_urn(case) == expected_result
41
+
42
+
43
+ @pytest.mark.parametrize(
44
+ ("case", "expected_result"),
45
+ [
46
+ *VARIABLE_DEFINITION_URN_TEST_CASES,
47
+ (
48
+ "https://www.vg.no",
49
+ "https://www.vg.no/",
50
+ ),
51
+ ],
52
+ )
53
+ def test_convert_to_vardef_urn_end_to_end(
54
+ case: str | None, expected_result: str | None, caplog
55
+ ):
56
+ caplog.set_level(logging.ERROR)
57
+ meta = Datadoc()
58
+ meta._set_metadata( # noqa: SLF001
59
+ all_optional_model.DatadocMetadata(
60
+ dataset=all_optional_model.Dataset(),
61
+ variables=[all_optional_model.Variable(definition_uri=case)],
62
+ )
63
+ )
64
+ if not expected_result:
65
+ assert meta.variables[0].definition_uri is None
66
+ else:
67
+ assert str(meta.variables[0].definition_uri) == expected_result
68
+ if not expected_result.startswith("urn:"):
69
+ assert "Could not convert value to URN" in caplog.text
@@ -525,7 +525,7 @@ wheels = [
525
525
 
526
526
  [[package]]
527
527
  name = "dapla-toolbelt-metadata"
528
- version = "0.9.3"
528
+ version = "0.9.4"
529
529
  source = { editable = "." }
530
530
  dependencies = [
531
531
  { name = "arrow" },
@@ -3,7 +3,7 @@ name = "vardef-maintenance"
3
3
  version = "0.1.0"
4
4
  description = "Dependencies necessary to run Notebooks for maintenance of variable definitions at Statistics Norway."
5
5
  requires-python = "^3.10" # This should match the range in dapla-toolbelt-metadata
6
- dependencies = ["dapla-toolbelt-metadata>=0.9.1", "ipykernel"]
6
+ dependencies = ["dapla-toolbelt-metadata>=0.9.5", "ipykernel"]
7
7
 
8
8
  [tool.poetry]
9
9
  package-mode = false # We don't want to install this "project", just the dependencies
@@ -40,7 +40,7 @@ rm -rf "$TMP_CHECKOUT_DIR"
40
40
 
41
41
  echo "$LOG_PREFIX Run ssb-project build"
42
42
  pushd "$VARIABLE_DEFINITIONS_DIR" || exit
43
- ssb-project build --no-verify
43
+ echo "n" | ssb-project build --no-verify
44
44
 
45
45
  echo "$LOG_PREFIX Configure kernel for all Notebooks"
46
46
  KERNELSPEC_OBJECT='{"kernelspec": {"display_name": "variable_definitions", "language": "python", "name": "variable_definitions"}}'