@@ -258,10 +258,14 @@ def _populate_sub_parser_by_class(
258258 sub_parser_action .add_argument (
259259 f"--{ x .replace ('_' , '-' )} " , required = True
260260 )
261- for x in mgr_cls ._create_attrs .optional + mgr_cls . _create_attrs . exclusive :
261+ for x in mgr_cls ._create_attrs .optional :
262262 sub_parser_action .add_argument (
263263 f"--{ x .replace ('_' , '-' )} " , required = False
264264 )
265+ if mgr_cls ._create_attrs .exclusive :
266+ group = sub_parser_action .add_mutually_exclusive_group ()
267+ for x in mgr_cls ._create_attrs .exclusive :
268+ group .add_argument (f"--{ x .replace ('_' , '-' )} " )
265269
266270 if action_name == "update" :
267271 if cls ._id_attr is not None :
@@ -274,12 +278,17 @@ def _populate_sub_parser_by_class(
274278 f"--{ x .replace ('_' , '-' )} " , required = True
275279 )
276280
277- for x in mgr_cls ._update_attrs .optional + mgr_cls . _update_attrs . exclusive :
281+ for x in mgr_cls ._update_attrs .optional :
278282 if x != cls ._id_attr :
279283 sub_parser_action .add_argument (
280284 f"--{ x .replace ('_' , '-' )} " , required = False
281285 )
282286
287+ if mgr_cls ._create_attrs .exclusive :
288+ group = sub_parser_action .add_mutually_exclusive_group ()
289+ for x in mgr_cls ._create_attrs .exclusive :
290+ group .add_argument (f"--{ x .replace ('_' , '-' )} " )
291+
283292 if cls .__name__ in cli .custom_actions :
284293 name = cls .__name__
285294 for action_name in cli .custom_actions [name ]:
0 commit comments