Skip to content

Commit 1f7c2d2

Browse files
committed
Ensure backwards compatibility for imports
1 parent 45eacc1 commit 1f7c2d2

File tree

7 files changed

+534
-300
lines changed

7 files changed

+534
-300
lines changed
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
# This is provided for backwards compatibility
2-
import all_optional.model
3-
import all_optional.model as model
4-
import required.model
1+
from . import (
2+
all_optional,
3+
model, # For backwards compatibility
4+
required,
5+
)
6+
7+
__all__ = ["model", "all_optional", "required"]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Module where all model fields are forced to be optional.
2+
3+
This is useful for persisting and validating data from users as it is entered via an interface.
4+
"""
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"""This module is a backwards compatibility shim, to support `from datadoc_model.model import xxx` formats"""
2+
3+
import warnings
4+
5+
warnings.warn(
6+
message="datadoc_model.model has been moved to datadoc_model.all_optional.model. Please update imports accordingly. This will be removed in the next major release.",
7+
category=DeprecationWarning,
8+
stacklevel=2,
9+
)
10+
11+
from .all_optional.model import * # noqa: E402, F403
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""Module where model fields which are required must be provided on model instantiation.
2+
3+
This is useful for validating finished data structures.
4+
"""

generated/python/datadoc_model/poetry.lock

Lines changed: 401 additions & 296 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import pytest
2+
from datadoc_model.model import (
3+
DatadocMetadata,
4+
MetadataContainer,
5+
PseudonymizationMetadata,
6+
)
7+
from pydantic import ValidationError
8+
9+
10+
def test_instantiate_no_values_container():
11+
container = MetadataContainer()
12+
assert isinstance(container, MetadataContainer)
13+
14+
15+
def test_instantiate_no_values_datadoc():
16+
datadoc = DatadocMetadata()
17+
assert isinstance(datadoc, DatadocMetadata)
18+
19+
20+
def test_instantiate_no_values_pseudo():
21+
pseudo = PseudonymizationMetadata()
22+
assert isinstance(pseudo, PseudonymizationMetadata)
23+
24+
25+
def test_unknown_field():
26+
with pytest.raises(ValidationError):
27+
DatadocMetadata(unknown_field="random_value")
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
from datetime import datetime
2+
from uuid import uuid4
3+
4+
import pytest
5+
from datadoc_model.required.model import (
6+
DatadocMetadata,
7+
Dataset,
8+
LanguageStringType,
9+
LanguageStringTypeItem,
10+
MetadataContainer,
11+
PseudonymizationMetadata,
12+
)
13+
from pydantic import ValidationError
14+
15+
16+
def test_instantiate_no_values_container():
17+
container = MetadataContainer()
18+
assert isinstance(container, MetadataContainer)
19+
20+
21+
def test_instantiate_no_values_datadoc():
22+
with pytest.raises(ValidationError):
23+
DatadocMetadata()
24+
25+
26+
def test_instantiate_all_required_values_datadoc():
27+
DatadocMetadata(
28+
dataset=Dataset(
29+
short_name="person_testdata",
30+
name=LanguageStringType(
31+
[
32+
LanguageStringTypeItem(
33+
languageCode="nb",
34+
languageText="Person test data",
35+
),
36+
],
37+
),
38+
description=LanguageStringType(
39+
[
40+
LanguageStringTypeItem(
41+
languageCode="nb",
42+
languageText="Person test data",
43+
),
44+
],
45+
),
46+
population_description=LanguageStringType(
47+
[
48+
LanguageStringTypeItem(
49+
languageCode="nb",
50+
languageText="Person test data",
51+
),
52+
],
53+
),
54+
version="1",
55+
unit_type="20",
56+
subject_field="20",
57+
contains_personal_data=True,
58+
id=uuid4(),
59+
owner="team-metadata",
60+
file_path="path/to/dataset",
61+
metadata_created_by="mmw",
62+
metadata_created_date=datetime.now(),
63+
metadata_last_updated_by="mmw",
64+
metadata_last_updated_date=datetime.now(),
65+
assessment="PROTECTED",
66+
dataset_status="DRAFT",
67+
dataset_state="PROCESSED_DATA",
68+
),
69+
variables=[],
70+
)
71+
72+
73+
def test_instantiate_no_values_pseudo():
74+
with pytest.raises(ValidationError):
75+
PseudonymizationMetadata()
76+
77+
78+
def test_unknown_field():
79+
with pytest.raises(ValidationError):
80+
DatadocMetadata(unknown_field="random_value")

0 commit comments

Comments
 (0)