@@ -258,10 +258,14 @@ def _populate_sub_parser_by_class(
258
258
sub_parser_action .add_argument (
259
259
f"--{ x .replace ('_' , '-' )} " , required = True
260
260
)
261
- for x in mgr_cls ._create_attrs .optional + mgr_cls . _create_attrs . exclusive :
261
+ for x in mgr_cls ._create_attrs .optional :
262
262
sub_parser_action .add_argument (
263
263
f"--{ x .replace ('_' , '-' )} " , required = False
264
264
)
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 ('_' , '-' )} " )
265
269
266
270
if action_name == "update" :
267
271
if cls ._id_attr is not None :
@@ -274,12 +278,17 @@ def _populate_sub_parser_by_class(
274
278
f"--{ x .replace ('_' , '-' )} " , required = True
275
279
)
276
280
277
- for x in mgr_cls ._update_attrs .optional + mgr_cls . _update_attrs . exclusive :
281
+ for x in mgr_cls ._update_attrs .optional :
278
282
if x != cls ._id_attr :
279
283
sub_parser_action .add_argument (
280
284
f"--{ x .replace ('_' , '-' )} " , required = False
281
285
)
282
286
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
+
283
292
if cls .__name__ in cli .custom_actions :
284
293
name = cls .__name__
285
294
for action_name in cli .custom_actions [name ]:
0 commit comments