@@ -124,10 +124,10 @@ def clear(self) -> None:
124124
125125 .. versionadded:: 4.2.0
126126 """
127- self .components ( traverse = ()) .clear ()
128- self .tags ( traverse = ()) .clear ()
129- self .relation_tags_many ( traverse = ()) .clear ()
130- self .relation_components ( traverse = ()) .clear ()
127+ self .components .clear ()
128+ self .tags .clear ()
129+ self .relation_tags_many .clear ()
130+ self .relation_components .clear ()
131131
132132 def instantiate (self ) -> Self :
133133 """Return a new entity which inherits the components, tags, and relations of this entity.
@@ -594,6 +594,12 @@ def pop(
594594 del self [__key ]
595595 return value
596596
597+ def clear (self ) -> None :
598+ """Remove any components stored directly in this entity."""
599+ if self .traverse :
600+ return self (traverse = ()).clear ()
601+ return super ().clear ()
602+
597603
598604@attrs .define (eq = False , frozen = True , weakref_slot = False )
599605class EntityTags (MutableSet [Any ]):
@@ -942,6 +948,13 @@ def __attrs_post_init__(self) -> None:
942948 """Validate attributes."""
943949 assert isinstance (self .entity , Entity ), self .entity
944950
951+ def __call__ (self , * , traverse : Iterable [object ]) -> Self :
952+ """Update this view with alternative parameters, such as a specific traversal relation.
953+
954+ .. versionadded:: Unreleased
955+ """
956+ return self .__class__ (self .entity , self .key , tuple (traverse ))
957+
945958 def __getitem__ (self , target : Entity ) -> T :
946959 """Return the component related to a target entity."""
947960 _relation_components_by_entity = self .entity .registry ._relation_components_by_entity
@@ -1001,6 +1014,12 @@ def __len__(self) -> int:
10011014 """Return the count of targets for this component relation."""
10021015 return len (self .keys ())
10031016
1017+ def clear (self ) -> None :
1018+ """Remove any components stored directly in this entity relation."""
1019+ if self .traverse :
1020+ return self (traverse = ()).clear ()
1021+ return super ().clear ()
1022+
10041023
10051024@attrs .define (eq = False , frozen = True , weakref_slot = False )
10061025class EntityComponentRelations (MutableMapping [ComponentKey [Any ], EntityComponentRelationMapping [Any ]]):
0 commit comments