Skip to content

Commit dbd4b66

Browse files
author
Jens Kürten
committed
add pydantic to mypy and fix resulting type issues
1 parent 6734cc8 commit dbd4b66

File tree

7 files changed

+34
-34
lines changed

7 files changed

+34
-34
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ repos:
1919
[
2020
types-mock,
2121
types-requests,
22-
types-PyYAML
22+
types-PyYAML,
23+
pydantic
2324
]
2425
- repo: https://github.com/pre-commit/pre-commit-hooks
2526
rev: v4.4.0

csfunctions/events/dummy.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,5 @@ class DummyEvent(BaseEvent):
1717
Dummy Event, for unit testing
1818
"""
1919

20-
def __init__(self, event_id: str, data: DummyEventData, **_):
21-
super().__init__(name=EventNames.DUMMY, event_id=event_id, data=data)
22-
23-
name: Literal[EventNames.DUMMY]
24-
data: DummyEventData = Field([])
20+
name: Literal[EventNames.DUMMY] = EventNames.DUMMY
21+
data: DummyEventData = Field(..., description="Dummy Event Data")

csfunctions/events/workflow_task_trigger.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,5 @@ class WorkflowTaskTriggerEventData(BaseModel):
1818

1919

2020
class WorkflowTaskTriggerEvent(BaseEvent):
21-
def __init__(self, event_id: str, data: WorkflowTaskTriggerEventData, **_):
22-
super().__init__(name=EventNames.WORKFLOW_TASK_TRIGGER, event_id=event_id, data=data)
23-
24-
name: Literal[EventNames.WORKFLOW_TASK_TRIGGER]
21+
name: Literal[EventNames.WORKFLOW_TASK_TRIGGER] = EventNames.WORKFLOW_TASK_TRIGGER
2522
data: WorkflowTaskTriggerEventData

csfunctions/handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
from typing import Callable
77

88
import yaml
9-
from pydantic import BaseModel
109

1110
from csfunctions import ErrorResponse, Event, Request, WorkloadResponse
1211
from csfunctions.actions import ActionUnion
1312
from csfunctions.config import ConfigModel, FunctionModel
13+
from csfunctions.events import EventData
1414
from csfunctions.objects import BaseObject
1515
from csfunctions.response import ResponseUnion
1616
from csfunctions.service import Service
@@ -53,7 +53,7 @@ def link_objects(event: Event):
5353
e.g. document.part
5454
"""
5555
data = getattr(event, "data", None)
56-
if not isinstance(data, BaseModel):
56+
if data is None or not isinstance(data, EventData): # type: ignore # MyPy doesn't like PEP604
5757
return
5858

5959
# we expect all objects to be passed in Event.data

csfunctions/objects/classification.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ class ObjectPropertyValue(BaseObject):
1616
ref_object_id: str = Field(..., description="Referenced Object")
1717
boolean_value: int | None = Field(..., description="Boolean Value")
1818
datetime_value: datetime | None = Field(..., description="Datetime Value")
19-
float_value: float | None = Field("", description="Float Value")
20-
float_value_normalized: float | None = Field("", description="Float Value Normalized")
21-
integer_value: int | None = Field("", description="Integer Value")
19+
float_value: float | None = Field(None, description="Float Value")
20+
float_value_normalized: float | None = Field(None, description="Float Value Normalized")
21+
integer_value: int | None = Field(None, description="Integer Value")
2222
iso_language_code: str | None = Field(None, description="ISO Language Code")
23-
value_pos: int | None = Field("", description="Position")
23+
value_pos: int | None = Field(None, description="Position")
2424
property_code: str | None = Field("", description="Property Code")
2525
property_path: str | None = Field(None, description="Property Path")
2626
property_type: str | None = Field(None, description="Property Type")

json_schemas/request.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,7 @@
897897
"properties": {
898898
"name": {
899899
"const": "dummy",
900+
"default": "dummy",
900901
"enum": [
901902
"dummy"
902903
],
@@ -914,12 +915,12 @@
914915
"$ref": "#/$defs/DummyEventData"
915916
}
916917
],
917-
"default": []
918+
"description": "Dummy Event Data"
918919
}
919920
},
920921
"required": [
921-
"name",
922-
"event_id"
922+
"event_id",
923+
"data"
923924
],
924925
"title": "DummyEvent",
925926
"type": "object"
@@ -2718,6 +2719,7 @@
27182719
"properties": {
27192720
"name": {
27202721
"const": "workflow_task_trigger",
2722+
"default": "workflow_task_trigger",
27212723
"enum": [
27222724
"workflow_task_trigger"
27232725
],
@@ -2734,7 +2736,6 @@
27342736
}
27352737
},
27362738
"required": [
2737-
"name",
27382739
"event_id",
27392740
"data"
27402741
],

tests/utils.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ def action_list_function(*args, **kwargs): # pylint: disable=unused-argument
3636
return [AbortAndShowErrorAction(message="Testerror"), AbortAndShowErrorAction(message="Testerror")]
3737

3838

39-
dummy_document = Document(
40-
**{
39+
dummy_document = Document.model_validate(
40+
{
4141
"object_type": "document",
4242
"z_nummer": "D000017",
4343
"z_index": "a",
@@ -87,8 +87,8 @@ def action_list_function(*args, **kwargs): # pylint: disable=unused-argument
8787
}
8888
)
8989

90-
dummy_part = Part(
91-
**{
90+
dummy_part = Part.model_validate(
91+
{
9292
"object_type": "part",
9393
"teilenummer": "000000",
9494
"t_index": "a",
@@ -141,21 +141,25 @@ def action_list_function(*args, **kwargs): # pylint: disable=unused-argument
141141
)
142142

143143
dummy_request = Request(
144-
metadata=MetaData(
145-
request_id="123",
146-
app_lang="de",
147-
app_user="caddok",
148-
request_datetime=datetime(2000, 1, 1),
149-
transaction_id="123asd",
150-
instance_url="https://instance.contact-cloud.com",
151-
service_url=None,
144+
metadata=MetaData.model_validate(
145+
{
146+
"request_id": "123",
147+
"app_lang": "de",
148+
"app_user": "caddok",
149+
"request_datetime": datetime(2000, 1, 1),
150+
"transaction_id": "123asd",
151+
"instance_url": "https://instance.contact-cloud.com",
152+
"service_url": None,
153+
"service_token": "123",
154+
"db_service_url": None,
155+
}
152156
),
153157
event=DummyEvent(event_id="42", data=DummyEventData(documents=[dummy_document], parts=[dummy_part])),
154158
)
155159

156160

157-
dummy_ec = EngineeringChange(
158-
**{
161+
dummy_ec = EngineeringChange.model_validate(
162+
{
159163
"object_type": "engineering_change",
160164
"cdb_ec_id": "EC00000005",
161165
"cdb_project_id": "",

0 commit comments

Comments
 (0)