@@ -1065,7 +1065,7 @@ def _init_relationships(self, data: Optional[dict] = None) -> None:
10651065 setattr (
10661066 self .__class__ ,
10671067 rel_name ,
1068- generate_relationship_property (name = rel_name , node = self , node_class = RelatedNode ), # type: ignore[arg-type]
1068+ generate_relationship_property (name = rel_name , node = self ),
10691069 )
10701070 setattr (self , rel_name , rel_data )
10711071 else :
@@ -1542,7 +1542,7 @@ def _init_relationships(self, data: Optional[dict] = None) -> None:
15421542 setattr (
15431543 self .__class__ ,
15441544 rel_name ,
1545- generate_relationship_property (name = rel_name , node = self , node_class = RelatedNodeSync ), # type: ignore[arg-type]
1545+ generate_relationship_property (name = rel_name , node = self ),
15461546 )
15471547 setattr (self , rel_name , rel_data )
15481548 else :
@@ -1993,13 +1993,12 @@ def _generate_input_data(self) -> Union[str, None]:
19931993 return self .id
19941994
19951995
1996- def generate_relationship_property (node : Union [InfrahubNode , InfrahubNodeSync ], name : str , node_class ): # type: ignore
1996+ def generate_relationship_property (node : Union [InfrahubNode , InfrahubNodeSync ], name : str ) -> property :
19971997 """Generates a property that stores values under a private non-public name.
19981998
19991999 Args:
20002000 node (Union[InfrahubNode, InfrahubNodeSync]): The node instance.
20012001 name (str): The name of the relationship property.
2002- node_class: The class of the node.
20032002
20042003 Returns:
20052004 A property object for managing the relationship.
@@ -2008,20 +2007,29 @@ def generate_relationship_property(node: Union[InfrahubNode, InfrahubNodeSync],
20082007 internal_name = "_" + name .lower ()
20092008 external_name = name
20102009
2011- @property # type: ignore
2012- def prop (self ): # type: ignore
2010+ def prop_getter (self : InfrahubNodeBase ) -> Any :
20132011 return getattr (self , internal_name )
20142012
2015- @prop .setter
2016- def prop (self , value ): # type: ignore
2013+ def prop_setter (self : InfrahubNodeBase , value : Any ) -> None :
20172014 if isinstance (value , RelatedNodeBase ) or value is None :
20182015 setattr (self , internal_name , value )
20192016 else :
20202017 schema = [rel for rel in self ._schema .relationships if rel .name == external_name ][0 ]
2021- setattr (
2022- self ,
2023- internal_name ,
2024- node_class (name = external_name , branch = node ._branch , client = node ._client , schema = schema , data = value ),
2025- )
2018+ if isinstance (node , InfrahubNode ):
2019+ setattr (
2020+ self ,
2021+ internal_name ,
2022+ RelatedNode (
2023+ name = external_name , branch = node ._branch , client = node ._client , schema = schema , data = value
2024+ ),
2025+ )
2026+ else :
2027+ setattr (
2028+ self ,
2029+ internal_name ,
2030+ RelatedNodeSync (
2031+ name = external_name , branch = node ._branch , client = node ._client , schema = schema , data = value
2032+ ),
2033+ )
20262034
2027- return prop
2035+ return property ( prop_getter , prop_setter )
0 commit comments