17
17
18
18
19
19
from itertools import chain
20
- from typing import TYPE_CHECKING , Iterable , List , Optional , TypeVar
20
+ from typing import TYPE_CHECKING , Iterable , List , Optional , TypeVar , Type
21
21
22
22
from pydantic import Field
23
23
37
37
38
38
39
39
if TYPE_CHECKING :
40
- from ..model import Model # pragma: no cover
40
+ from ..model import Model , Container # pragma: no cover
41
41
42
42
43
- __all__ = ("ViewSet" , "ViewSetIO" )
43
+ ConcreteView = TypeVar (
44
+ "ConcreteView" ,
45
+ ComponentView ,
46
+ ContainerView ,
47
+ DeploymentView ,
48
+ DynamicView ,
49
+ FilteredView ,
50
+ SystemContextView ,
51
+ SystemLandscapeView ,
52
+ )
53
+
44
54
45
- T = TypeVar ( "T " )
55
+ __all__ = ( "ViewSet" , "ViewSetIO " )
46
56
47
57
48
58
class ViewSetIO (BaseModel ):
@@ -123,7 +133,7 @@ def container_views(self) -> Iterable[ContainerView]:
123
133
124
134
@property
125
135
def component_views (self ) -> Iterable [ComponentView ]:
126
- """Return the CompoentViews in this ViewSet."""
136
+ """Return the ComponentViews in this ViewSet."""
127
137
return self ._get_typed_views (ComponentView )
128
138
129
139
@property
@@ -142,7 +152,7 @@ def filtered_views(self) -> Iterable[FilteredView]:
142
152
return self ._get_typed_views (FilteredView )
143
153
144
154
@property
145
- def views (self ) -> Iterable [AbstractView ]:
155
+ def views (self ) -> Iterable [View ]:
146
156
"""Return all the views in this ViewSet."""
147
157
return self ._views .values ()
148
158
@@ -176,6 +186,7 @@ def hydrate(cls, views: ViewSetIO, model: "Model") -> "ViewSet":
176
186
component_views = []
177
187
for view_io in views .component_views :
178
188
container = model .get_element (view_io .container_id )
189
+ assert isinstance (container , Container )
179
190
view = ComponentView .hydrate (view_io , container = container )
180
191
cls ._hydrate_view (view , model = model )
181
192
component_views .append (view )
@@ -229,7 +240,7 @@ def _hydrate_view(cls, view: View, model: "Model") -> None:
229
240
relationship_view .id
230
241
)
231
242
232
- def _add_view (self , view : View ) -> None :
243
+ def _add_view (self , view : AbstractView ) -> None :
233
244
self ._views [view .key ] = view
234
245
235
246
def create_system_landscape_view (
@@ -332,7 +343,7 @@ def create_dynamic_view(self, **kwargs) -> DynamicView:
332
343
"""
333
344
Add a new DynamicView to the ViewSet.
334
345
335
- Args:
346
+ Keyword Args:
336
347
**kwagrs: Provide keyword arguments for instantiating a `DynamicView`.
337
348
"""
338
349
dynamic_view = DynamicView (** kwargs )
@@ -381,5 +392,5 @@ def _ensure_key_is_specific_and_unique(self, key: str) -> None:
381
392
if key in self ._views :
382
393
raise ValueError (f"View already exists in workspace with key '{ key } '." )
383
394
384
- def _get_typed_views (self , klass : T ) -> Iterable [T ]:
385
- return (view for view in self ._views .values () if isinstance (view , klass ))
395
+ def _get_typed_views (self , view_type : Type [ ConcreteView ] ) -> Iterable [ConcreteView ]:
396
+ return (view for view in self ._views .values () if isinstance (view , view_type ))
0 commit comments