Skip to content

Cleanup ignored type annotations #84

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 22 additions & 14 deletions infrahub_sdk/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -1065,7 +1065,7 @@ def _init_relationships(self, data: Optional[dict] = None) -> None:
setattr(
self.__class__,
rel_name,
generate_relationship_property(name=rel_name, node=self, node_class=RelatedNode), # type: ignore[arg-type]
generate_relationship_property(name=rel_name, node=self),
)
setattr(self, rel_name, rel_data)
else:
Expand Down Expand Up @@ -1542,7 +1542,7 @@ def _init_relationships(self, data: Optional[dict] = None) -> None:
setattr(
self.__class__,
rel_name,
generate_relationship_property(name=rel_name, node=self, node_class=RelatedNodeSync), # type: ignore[arg-type]
generate_relationship_property(name=rel_name, node=self),
)
setattr(self, rel_name, rel_data)
else:
Expand Down Expand Up @@ -1993,13 +1993,12 @@ def _generate_input_data(self) -> Union[str, None]:
return self.id


def generate_relationship_property(node: Union[InfrahubNode, InfrahubNodeSync], name: str, node_class): # type: ignore
def generate_relationship_property(node: Union[InfrahubNode, InfrahubNodeSync], name: str) -> property:
"""Generates a property that stores values under a private non-public name.

Args:
node (Union[InfrahubNode, InfrahubNodeSync]): The node instance.
name (str): The name of the relationship property.
node_class: The class of the node.

Returns:
A property object for managing the relationship.
Expand All @@ -2008,20 +2007,29 @@ def generate_relationship_property(node: Union[InfrahubNode, InfrahubNodeSync],
internal_name = "_" + name.lower()
external_name = name

@property # type: ignore
def prop(self): # type: ignore
def prop_getter(self: InfrahubNodeBase) -> Any:
return getattr(self, internal_name)

@prop.setter
def prop(self, value): # type: ignore
def prop_setter(self: InfrahubNodeBase, value: Any) -> None:
if isinstance(value, RelatedNodeBase) or value is None:
setattr(self, internal_name, value)
else:
schema = [rel for rel in self._schema.relationships if rel.name == external_name][0]
setattr(
self,
internal_name,
node_class(name=external_name, branch=node._branch, client=node._client, schema=schema, data=value),
)
if isinstance(node, InfrahubNode):
setattr(
self,
internal_name,
RelatedNode(
name=external_name, branch=node._branch, client=node._client, schema=schema, data=value
),
)
else:
setattr(
self,
internal_name,
RelatedNodeSync(
name=external_name, branch=node._branch, client=node._client, schema=schema, data=value
),
)

return prop
return property(prop_getter, prop_setter)
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,6 @@ max-complexity = 17
##################################################################################################
# Review and change the below later #
##################################################################################################
"ANN001", # Missing type annotation for function argument
"ANN201", # ANN201 Missing return type annotation for public function
"ANN202", # Missing return type annotation for private function
"ANN204", # Missing return type annotation for special method
Expand Down