Skip to content

Commit ba28096

Browse files
committed
Avoid processing duplicate relationships
1 parent 980e7ef commit ba28096

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

pylint/pyreverse/diagrams.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ def extract_relationships(self) -> None:
226226
obj.attrs = self.get_attrs(node)
227227
obj.methods = self.get_methods(node)
228228
obj.shape = "class"
229+
229230
# inheritance link
230231
for par_node in node.ancestors(recurs=False):
231232
try:
@@ -234,19 +235,25 @@ def extract_relationships(self) -> None:
234235
except KeyError:
235236
continue
236237

238+
# Track processed attributes to avoid duplicates
239+
processed_attrs = set()
240+
237241
# Composition links
238242
for name, values in list(node.compositions_type.items()):
239243
for value in values:
240244
self.assign_association_relationship(
241245
value, obj, name, "composition"
242246
)
247+
processed_attrs.add(name)
243248

244249
# Aggregation links
245250
for name, values in list(node.aggregations_type.items()):
246-
for value in values:
247-
self.assign_association_relationship(
248-
value, obj, name, "aggregation"
249-
)
251+
if name not in processed_attrs:
252+
for value in values:
253+
self.assign_association_relationship(
254+
value, obj, name, "aggregation"
255+
)
256+
processed_attrs.add(name)
250257

251258
# Association links
252259
associations = node.associations_type.copy()
@@ -255,10 +262,11 @@ def extract_relationships(self) -> None:
255262
associations[name] = values
256263

257264
for name, values in associations.items():
258-
for value in values:
259-
self.assign_association_relationship(
260-
value, obj, name, "association"
261-
)
265+
if name not in processed_attrs:
266+
for value in values:
267+
self.assign_association_relationship(
268+
value, obj, name, "association"
269+
)
262270

263271
def assign_association_relationship(
264272
self, value: astroid.NodeNG, obj: ClassEntity, name: str, type_relationship: str

0 commit comments

Comments
 (0)