@@ -692,35 +692,44 @@ def get_cls(name, info, parent=None):
692692 cls = type (pname , (base ,), dct )
693693
694694 children = info .get ("children" )
695+ taboo = set (dir (cls ))
696+ taboo |= set (
697+ ["child_names" , "command_names" , "argument_names" , "child_object_type" ]
698+ )
695699 if children :
700+ taboo .add ("child_names" )
696701 cls .child_names = []
697702 for cname , cinfo in children .items ():
698703 ccls = get_cls (cname , cinfo , cls )
699704 i = 0
700705 ccls_name = ccls .__name__
701- while ccls_name in cls . child_names :
706+ while ccls_name in taboo :
702707 if i > 0 :
703708 ccls_name = ccls_name [: ccls_name .rfind ("_" )]
704709 i += 1
705710 ccls_name += f"_{ str (i )} "
706711 ccls .__name__ = ccls_name
707712 # pylint: disable=no-member
708713 cls .child_names .append (ccls .__name__ )
714+ taboo .add (ccls_name )
709715 setattr (cls , ccls .__name__ , ccls )
716+
710717 commands = info .get ("commands" )
711718 if commands :
712719 cls .command_names = []
713720 for cname , cinfo in commands .items ():
714721 ccls = get_cls (cname , cinfo , cls )
722+ i = 0
715723 ccls_name = ccls .__name__
716- while ccls_name in cls . command_names :
724+ while ccls_name in taboo :
717725 if i > 0 :
718726 ccls_name = ccls_name [: ccls_name .rfind ("_" )]
719727 i += 1
720728 ccls_name += f"_{ str (i )} "
721729 ccls .__name__ = ccls_name
722730 # pylint: disable=no-member
723731 cls .command_names .append (ccls .__name__ )
732+ taboo .add (ccls_name )
724733 setattr (cls , ccls .__name__ , ccls )
725734
726735 arguments = info .get ("arguments" )
@@ -732,20 +741,23 @@ def get_cls(name, info, parent=None):
732741 cls .argument_names = []
733742 for aname , ainfo in arguments .items ():
734743 ccls = get_cls (aname , ainfo , cls )
744+ i = 0
735745 th = ccls ._state_type
736746 th = th .__name__ if hasattr (th , "__name__" ) else str (th )
737747 doc += f" { ccls .__name__ } : { th } \n "
738748 doc += f" { ccls .__doc__ } \n "
739749 ccls_name = ccls .__name__
740- while ccls_name in cls . argument_names :
750+ while ccls_name in taboo :
741751 if i > 0 :
742752 ccls_name = ccls_name [: ccls_name .rfind ("_" )]
743753 i += 1
744754 ccls_name += f"_{ str (i )} "
745755 ccls .__name__ = ccls_name
746756 # pylint: disable=no-member
747757 cls .argument_names .append (ccls .__name__ )
758+ taboo .add (ccls_name )
748759 setattr (cls , ccls .__name__ , ccls )
760+
749761 cls .__doc__ = doc
750762 object_type = info .get ("object-type" )
751763 if object_type :
0 commit comments