in src/aaz_dev/command/controller/cfg_reader.py [0:0]
def _is_similar_args_in_base(cls, arg1, arg2):
if isinstance(arg1, CMDArrayArgBase) and isinstance(arg2, CMDArrayArgBase):
return cls._is_similar_args_in_base(arg1.item, arg2.item)
elif isinstance(arg1, CMDObjectArgBase) and isinstance(arg2, CMDObjectArgBase):
# verify args
if (not arg1.args) != (not arg2.args):
return False
if arg1.args:
if len(arg1.args) != len(arg2.args):
return False
for sub_arg1 in arg1.args:
find_match = False
for sub_arg2 in arg2.args:
if cls.is_similar_args(sub_arg1, sub_arg2):
find_match = True
break
if not find_match:
return False
# verify additional props
if (arg1.additional_props is not None) != (arg2.additional_props is not None):
return False
if arg1.additional_props:
if (arg1.additional_props.item is not None) != (arg2.additional_props.item is not None):
return False
if arg1.additional_props.item:
if not cls._is_similar_args_in_base(arg1.additional_props.item, arg2.additional_props.item):
return False
elif arg1.type != arg2.type:
# handle cls argument
if arg1.type.startswith("@") and arg1.type == getattr(arg2, 'cls', None):
return True
if arg2.type.startswith("@") and arg2.type == getattr(arg1, 'cls', None):
return True
return False
return True