@@ -114,7 +114,7 @@ def doc_breadcrumbs(self, help_command, **kwargs):
114
114
doc .write (' . ' )
115
115
full_cmd_list .append (cmd )
116
116
full_cmd_name = ' ' .join (full_cmd_list )
117
- doc .write (':ref:`%s <cli:%s >`' % ( cmd , full_cmd_name ) )
117
+ doc .write (f ':ref:`{ cmd } <cli:{ full_cmd_name } >`' )
118
118
doc .write (' ]' )
119
119
120
120
def doc_title (self , help_command , ** kwargs ):
@@ -123,7 +123,7 @@ def doc_title(self, help_command, **kwargs):
123
123
reference = help_command .event_class .replace ('.' , ' ' )
124
124
if reference != 'aws' :
125
125
reference = 'aws ' + reference
126
- doc .writeln ('.. _cli:%s:' % reference )
126
+ doc .writeln (f '.. _cli:{ reference } :' )
127
127
doc .style .h1 (help_command .name )
128
128
129
129
def doc_description (self , help_command , ** kwargs ):
@@ -137,7 +137,7 @@ def doc_synopsis_start(self, help_command, **kwargs):
137
137
doc = help_command .doc
138
138
doc .style .h2 ('Synopsis' )
139
139
doc .style .start_codeblock ()
140
- doc .writeln ('%s' % help_command .name )
140
+ doc .writeln (f' { help_command .name } ' )
141
141
142
142
def doc_synopsis_option (self , arg_name , help_command , ** kwargs ):
143
143
doc = help_command .doc
@@ -151,15 +151,15 @@ def doc_synopsis_option(self, arg_name, help_command, **kwargs):
151
151
)
152
152
self ._documented_arg_groups .append (argument .group_name )
153
153
elif argument .cli_name .startswith ('--' ):
154
- option_str = '%s <value>' % argument . cli_name
154
+ option_str = f' { argument . cli_name } <value>'
155
155
else :
156
- option_str = '<%s>' % argument .cli_name
156
+ option_str = f'< { argument .cli_name } >'
157
157
if not (
158
158
argument .required
159
159
or getattr (argument , '_DOCUMENT_AS_REQUIRED' , False )
160
160
):
161
- option_str = '[%s]' % option_str
162
- doc .writeln ('%s' % option_str )
161
+ option_str = f'[ { option_str } ]'
162
+ doc .writeln (f' { option_str } ' )
163
163
164
164
def doc_synopsis_end (self , help_command , ** kwargs ):
165
165
doc = help_command .doc
@@ -180,28 +180,32 @@ def doc_options_start(self, help_command, **kwargs):
180
180
def doc_option (self , arg_name , help_command , ** kwargs ):
181
181
doc = help_command .doc
182
182
argument = help_command .arg_table [arg_name ]
183
+ if argument .required or getattr (
184
+ argument , '_DOCUMENT_AS_REQUIRED' , False
185
+ ):
186
+ required_field = ' [required]'
187
+ else :
188
+ required_field = ''
189
+
183
190
if argument .group_name in self ._arg_groups :
184
191
if argument .group_name in self ._documented_arg_groups :
185
192
# This arg is already documented so we can move on.
186
193
return
187
194
name = ' | ' .join (
188
195
[
189
- '``%s``' % a .cli_name
196
+ f '``{ a .cli_name } ``'
190
197
for a in self ._arg_groups [argument .group_name ]
191
198
]
192
199
)
193
200
self ._documented_arg_groups .append (argument .group_name )
194
201
else :
195
- name = '``%s``' % argument .cli_name
202
+ name = f '``{ argument .cli_name } ``'
196
203
doc .write (
197
- '%s (%s)\n '
198
- % (
199
- name ,
200
- self ._get_argument_type_name (
201
- argument .argument_model , argument .cli_type_name
202
- ),
203
- )
204
+ f'{ name } '
205
+ f'({ self ._get_argument_type_name (argument .argument_model , argument .cli_type_name )} )'
206
+ f'{ required_field } \n '
204
207
)
208
+
205
209
doc .style .indent ()
206
210
doc .include_doc_string (argument .documentation )
207
211
if is_streaming_blob_type (argument .argument_model ):
@@ -229,7 +233,7 @@ def doc_relateditem(self, help_command, related_item, **kwargs):
229
233
doc = help_command .doc
230
234
doc .write ('* ' )
231
235
doc .style .sphinx_reference_label (
232
- label = 'cli:%s' % related_item , text = related_item
236
+ label = f 'cli:{ related_item } ' , text = related_item
233
237
)
234
238
doc .write ('\n ' )
235
239
@@ -241,7 +245,7 @@ def _document_enums(self, model, doc):
241
245
doc .write ('Possible values:' )
242
246
doc .style .start_ul ()
243
247
for enum in model .enum :
244
- doc .style .li ('``%s ``' % enum )
248
+ doc .style .li (f '``{ enum } ``' )
245
249
doc .style .end_ul ()
246
250
247
251
def _document_nested_structure (self , model , doc ):
@@ -252,19 +256,35 @@ def _document_nested_structure(self, model, doc):
252
256
for member_name , member_shape in model .members .items ():
253
257
is_required = member_name in required_members
254
258
self ._doc_member (
255
- doc , member_name , member_shape , stack = [model .name ], required = is_required
259
+ doc ,
260
+ member_name ,
261
+ member_shape ,
262
+ stack = [model .name ],
263
+ required = is_required ,
256
264
)
257
265
elif member_type_name == 'list' :
258
- self ._doc_member (doc , '' , model .member , stack = [model .name ], required = False )
266
+ self ._doc_member (
267
+ doc , '' , model .member , stack = [model .name ], required = False
268
+ )
259
269
elif member_type_name == 'map' :
260
270
key_shape = model .key
261
271
key_name = key_shape .serialization .get ('name' , 'key' )
262
- self ._doc_member (doc , key_name , key_shape , stack = [model .name ], required = False )
272
+ self ._doc_member (
273
+ doc , key_name , key_shape , stack = [model .name ], required = False
274
+ )
263
275
value_shape = model .value
264
276
value_name = value_shape .serialization .get ('name' , 'value' )
265
- self ._doc_member (doc , value_name , value_shape , stack = [model .name ], required = False )
277
+ self ._doc_member (
278
+ doc ,
279
+ value_name ,
280
+ value_shape ,
281
+ stack = [model .name ],
282
+ required = False ,
283
+ )
266
284
267
- def _doc_member (self , doc , member_name , member_shape , stack , required = False ):
285
+ def _doc_member (
286
+ self , doc , member_name , member_shape , stack , required = False
287
+ ):
268
288
if member_shape .name in stack :
269
289
# Document the recursion once, otherwise just
270
290
# note the fact that it's recursive and return.
@@ -274,29 +294,36 @@ def _doc_member(self, doc, member_name, member_shape, stack, required=False):
274
294
return
275
295
stack .append (member_shape .name )
276
296
try :
277
- self ._do_doc_member (doc , member_name , member_shape , stack , required )
297
+ self ._do_doc_member (
298
+ doc , member_name , member_shape , stack , required
299
+ )
278
300
finally :
279
301
stack .pop ()
280
302
281
- def _do_doc_member (self , doc , member_name , member_shape , stack , required = False ):
303
+ def _do_doc_member (
304
+ self , doc , member_name , member_shape , stack , required = False
305
+ ):
282
306
docs = member_shape .documentation
283
307
type_name = self ._get_argument_type_name (
284
308
member_shape , member_shape .type_name
285
309
)
310
+
286
311
if member_name :
287
- doc . write ( '%s -> (%s)' % ( member_name , type_name ))
312
+ tmp = f' { member_name } -> ({ type_name } )'
288
313
else :
289
- doc .write ('(%s)' % type_name )
314
+ tmp = f'({ type_name } )'
315
+
316
+ if required :
317
+ tmp += ' [required]'
318
+
319
+ doc .write (tmp )
320
+
290
321
doc .style .indent ()
291
322
doc .style .new_paragraph ()
292
323
doc .include_doc_string (docs )
293
324
if is_tagged_union_type (member_shape ):
294
325
self ._add_tagged_union_note (member_shape , doc )
295
326
296
- if required :
297
- doc .style .new_paragraph ()
298
- doc .write ('This parameter is required.' )
299
-
300
327
self ._document_enums (member_shape , doc )
301
328
self ._document_constraints (member_shape , doc )
302
329
doc .style .new_paragraph ()
@@ -305,16 +332,22 @@ def _do_doc_member(self, doc, member_name, member_shape, stack, required=False):
305
332
required_members = member_shape .metadata .get ('required' , [])
306
333
for sub_name , sub_shape in member_shape .members .items ():
307
334
sub_required = sub_name in required_members
308
- self ._doc_member (doc , sub_name , sub_shape , stack , required = sub_required )
335
+ self ._doc_member (
336
+ doc , sub_name , sub_shape , stack , required = sub_required
337
+ )
309
338
elif member_type_name == 'map' :
310
339
key_shape = member_shape .key
311
340
key_name = key_shape .serialization .get ('name' , 'key' )
312
341
self ._doc_member (doc , key_name , key_shape , stack , required = False )
313
342
value_shape = member_shape .value
314
343
value_name = value_shape .serialization .get ('name' , 'value' )
315
- self ._doc_member (doc , value_name , value_shape , stack , required = False )
344
+ self ._doc_member (
345
+ doc , value_name , value_shape , stack , required = False
346
+ )
316
347
elif member_type_name == 'list' :
317
- self ._doc_member (doc , '' , member_shape .member , stack , required = False )
348
+ self ._doc_member (
349
+ doc , '' , member_shape .member , stack , required = False
350
+ )
318
351
doc .style .dedent ()
319
352
doc .style .new_paragraph ()
320
353
@@ -387,7 +420,7 @@ def doc_subitems_start(self, help_command, **kwargs):
387
420
388
421
def doc_subitem (self , command_name , help_command , ** kwargs ):
389
422
doc = help_command .doc
390
- file_name = '%s /index' % command_name
423
+ file_name = f' { command_name } /index'
391
424
doc .style .tocitem (command_name , file_name = file_name )
392
425
393
426
@@ -438,7 +471,7 @@ def doc_subitem(self, command_name, help_command, **kwargs):
438
471
# direct the subitem to the command's index because
439
472
# it has more subcommands to be documented.
440
473
if len (subcommand_table ) > 0 :
441
- file_name = '%s /index' % command_name
474
+ file_name = f' { command_name } /index'
442
475
doc .style .tocitem (command_name , file_name = file_name )
443
476
else :
444
477
doc .style .tocitem (command_name )
@@ -467,24 +500,20 @@ def _add_webapi_crosslink(self, help_command):
467
500
return
468
501
doc .style .new_paragraph ()
469
502
doc .write ("See also: " )
470
- link = '%s/%s/%s' % (
471
- self .AWS_DOC_BASE ,
472
- service_uid ,
473
- operation_model .name ,
474
- )
503
+ link = f'{ self .AWS_DOC_BASE } /{ service_uid } /{ operation_model .name } '
475
504
doc .style .external_link (title = "AWS API Documentation" , link = link )
476
505
doc .writeln ('' )
477
506
478
507
def _add_note_for_document_types_if_used (self , help_command ):
479
508
if operation_uses_document_types (help_command .obj ):
480
509
help_command .doc .style .new_paragraph ()
481
510
help_command .doc .writeln (
482
- '``%s `` uses document type values. Document types follow the '
511
+ f '``{ help_command . name } `` uses document type values. Document types follow the '
483
512
'JSON data model where valid values are: strings, numbers, '
484
513
'booleans, null, arrays, and objects. For command input, '
485
514
'options and nested parameters that are labeled with the type '
486
515
'``document`` must be provided as JSON. Shorthand syntax does '
487
- 'not support document types.' % help_command . name
516
+ 'not support document types.'
488
517
)
489
518
490
519
def _json_example_value_name (
@@ -495,13 +524,13 @@ def _json_example_value_name(
495
524
if isinstance (argument_model , StringShape ):
496
525
if argument_model .enum and include_enum_values :
497
526
choices = argument_model .enum
498
- return '|' .join (['"%s"' % c for c in choices ])
527
+ return '|' .join ([f'" { c } "' for c in choices ])
499
528
else :
500
529
return '"string"'
501
530
elif argument_model .type_name == 'boolean' :
502
531
return 'true|false'
503
532
else :
504
- return '%s' % argument_model .type_name
533
+ return f' { argument_model .type_name } '
505
534
506
535
def _json_example (self , doc , argument_model , stack ):
507
536
if argument_model .name in stack :
@@ -522,8 +551,7 @@ def _do_json_example(self, doc, argument_model, stack):
522
551
doc .write ('[' )
523
552
if argument_model .member .type_name in SCALAR_TYPES :
524
553
doc .write (
525
- '%s, ...'
526
- % self ._json_example_value_name (argument_model .member )
554
+ f'{ self ._json_example_value_name (argument_model .member )} , ...'
527
555
)
528
556
else :
529
557
doc .style .indent ()
@@ -538,7 +566,7 @@ def _do_json_example(self, doc, argument_model, stack):
538
566
doc .write ('{' )
539
567
doc .style .indent ()
540
568
key_string = self ._json_example_value_name (argument_model .key )
541
- doc .write ('%s : ' % key_string )
569
+ doc .write (f' { key_string } : ' )
542
570
if argument_model .value .type_name in SCALAR_TYPES :
543
571
doc .write (self ._json_example_value_name (argument_model .value ))
544
572
else :
@@ -568,20 +596,16 @@ def _doc_input_structure_members(self, doc, argument_model, stack):
568
596
member_type_name = member_model .type_name
569
597
if member_type_name in SCALAR_TYPES :
570
598
doc .write (
571
- '"%s": %s'
572
- % (
573
- member_name ,
574
- self ._json_example_value_name (member_model ),
575
- )
599
+ f'"{ member_name } ": { self ._json_example_value_name (member_model )} '
576
600
)
577
601
elif member_type_name == 'structure' :
578
- doc .write ('"%s ": ' % member_name )
602
+ doc .write (f'" { member_name } ": ' )
579
603
self ._json_example (doc , member_model , stack )
580
604
elif member_type_name == 'map' :
581
- doc .write ('"%s ": ' % member_name )
605
+ doc .write (f'" { member_name } ": ' )
582
606
self ._json_example (doc , member_model , stack )
583
607
elif member_type_name == 'list' :
584
- doc .write ('"%s ": ' % member_name )
608
+ doc .write (f'" { member_name } ": ' )
585
609
self ._json_example (doc , member_model , stack )
586
610
if i < len (members ) - 1 :
587
611
doc .write (',' )
@@ -637,7 +661,7 @@ def doc_option_example(self, arg_name, help_command, event_name, **kwargs):
637
661
example_type = self ._json_example_value_name (
638
662
member , include_enum_values = False
639
663
)
640
- doc .write ('%s %s ...' % ( example_type , example_type ) )
664
+ doc .write (f' { example_type } { example_type } ...' )
641
665
doc .style .end_codeblock ()
642
666
doc .style .new_paragraph ()
643
667
elif cli_argument .cli_type_name not in SCALAR_TYPES :
@@ -687,7 +711,7 @@ def doc_title(self, help_command, **kwargs):
687
711
doc = help_command .doc
688
712
doc .style .new_paragraph ()
689
713
doc .style .link_target_definition (
690
- refname = 'cli:aws help %s' % self .help_command .name , link = ''
714
+ refname = f 'cli:aws help { self .help_command .name } ' , link = ''
691
715
)
692
716
doc .style .h1 ('AWS CLI Topic Guide' )
693
717
@@ -732,9 +756,9 @@ def doc_subitems_start(self, help_command, **kwargs):
732
756
)
733
757
doc .write ('* ' )
734
758
doc .style .sphinx_reference_label (
735
- label = 'cli:aws help %s' % topic_name , text = topic_name
759
+ label = f 'cli:aws help { topic_name } ' , text = topic_name
736
760
)
737
- doc .write (': %s \n ' % description )
761
+ doc .write (f ': { description } \n ' )
738
762
# Add a hidden toctree to make sure everything is connected in
739
763
# the document.
740
764
doc .style .hidden_toctree ()
@@ -758,7 +782,7 @@ def doc_title(self, help_command, **kwargs):
758
782
doc = help_command .doc
759
783
doc .style .new_paragraph ()
760
784
doc .style .link_target_definition (
761
- refname = 'cli:aws help %s' % self .help_command .name , link = ''
785
+ refname = f 'cli:aws help { self .help_command .name } ' , link = ''
762
786
)
763
787
title = self ._topic_tag_db .get_tag_single_value (
764
788
help_command .name , 'title'
0 commit comments