Convert translatable string construction in enums to positional args only
Marco Ricci

Marco Ricci commited on 2025-01-15 19:23:47
Zeige 1 geänderte Dateien mit 426 Einfügungen und 429 Löschungen.


This too makes the rendered code more readable by elliding repetitive
information.
... ...
@@ -398,7 +398,7 @@ class TranslatableString(NamedTuple):
398 398
 def translatable(
399 399
     context: str,
400 400
     single: str,
401
-    # /,
401
+    /,
402 402
     flags: Iterable[str] = (),
403 403
     plural: str = '',
404 404
     comments: str = '',
... ...
@@ -517,7 +517,7 @@ class _TranslatedStringConstructor(Protocol):
517 517
         self,
518 518
         context: str,
519 519
         single: str,
520
-        # /,
520
+        /,
521 521
         flags: Iterable[str] = (),
522 522
         plural: str = '',
523 523
         comments: str = '',
... ...
@@ -526,7 +526,7 @@ class _TranslatedStringConstructor(Protocol):
526 526
 
527 527
 def _Commented(  # noqa: N802
528 528
     comments: str = '',
529
-    # /
529
+    /
530 530
 ) -> _TranslatedStringConstructor:
531 531
     """A "decorator" for readably constructing commented enum values.
532 532
 
... ...
@@ -545,126 +545,125 @@ def _Commented(  # noqa: N802
545 545
 
546 546
 class Label(enum.Enum):
547 547
     DEPRECATION_WARNING_LABEL = _Commented(
548
-        comments='This is a short label that will be prepended to '
548
+        'This is a short label that will be prepended to '
549 549
         'a warning message, e.g., "Deprecation warning: A subcommand '
550 550
         'will be required in v1.0."',
551 551
     )(
552
-        context='Label :: Diagnostics :: Marker',
553
-        single='Deprecation warning',
552
+        'Label :: Diagnostics :: Marker',
553
+        'Deprecation warning',
554 554
     )
555 555
     WARNING_LABEL = _Commented(
556
-        comments='This is a short label that will be prepended to '
556
+        'This is a short label that will be prepended to '
557 557
         'a warning message, e.g., "Warning: An empty service name '
558 558
         'is not supported by vault(1)."',
559 559
     )(
560
-        context='Label :: Diagnostics :: Marker',
561
-        single='Warning',
560
+        'Label :: Diagnostics :: Marker',
561
+        'Warning',
562 562
     )
563 563
     CANNOT_UPDATE_SETTINGS_METAVAR_SETTINGS_TYPE_GLOBAL = (
564 564
         _Commented(
565
-            comments='This is one of two values of the settings_type metavar '
565
+            'This is one of two values of the settings_type metavar '
566 566
             'used in the CANNOT_UPDATE_SETTINGS_NO_SETTINGS entry.  '
567 567
             'It is only used there.  '
568 568
             'The full sentence then reads: '
569 569
             '"Cannot update the global settings without any given settings."',
570 570
         )(
571
-            context='Label :: Error message :: Metavar',
572
-            single='global settings',
571
+            'Label :: Error message :: Metavar',
572
+            'global settings',
573 573
         )
574 574
     )
575 575
     CANNOT_UPDATE_SETTINGS_METAVAR_SETTINGS_TYPE_SERVICE = (
576 576
         _Commented(
577
-            comments='This is one of two values of the settings_type metavar '
577
+            'This is one of two values of the settings_type metavar '
578 578
             'used in the CANNOT_UPDATE_SETTINGS_NO_SETTINGS entry.  '
579 579
             'It is only used there.  '
580 580
             'The full sentence then reads: '
581 581
             '"Cannot update the service-specific settings without any '
582 582
             'given settings."',
583 583
         )(
584
-            context='Label :: Error message :: Metavar',
585
-            single='service-specific settings',
584
+            'Label :: Error message :: Metavar',
585
+            'service-specific settings',
586 586
         )
587 587
     )
588 588
     DERIVEPASSPHRASE_01 = _Commented(
589
-        comments='This is the first paragraph of the command help text, '
589
+        'This is the first paragraph of the command help text, '
590 590
         'but it also appears (in truncated form, if necessary) '
591 591
         'as one-line help text for this command.  '
592 592
         'The translation should thus be as meaningful as possible '
593 593
         'even if truncated.',
594 594
     )(
595
-        context='Label :: Help text :: Explanation',
596
-        single='Derive a strong passphrase, deterministically, '
597
-        'from a master secret.',
595
+        'Label :: Help text :: Explanation',
596
+        'Derive a strong passphrase, deterministically, from a master secret.',
598 597
     )
599 598
     DERIVEPASSPHRASE_02 = _Commented(
600
-        comments='',
599
+        '',
601 600
     )(
602
-        context='Label :: Help text :: Explanation',
603
-        single='The currently implemented subcommands are "vault" '
601
+        'Label :: Help text :: Explanation',
602
+        'The currently implemented subcommands are "vault" '
604 603
         '(for the scheme used by vault) and "export" '
605 604
         '(for exporting foreign configuration data).  '
606 605
         'See the respective `--help` output for instructions.  '
607 606
         'If no subcommand is given, we default to "vault".',
608 607
     )
609 608
     DERIVEPASSPHRASE_03 = _Commented(
610
-        comments='',
609
+        '',
611 610
     )(
612
-        context='Label :: Help text :: Explanation',
613
-        single='Deprecation notice: Defaulting to "vault" is deprecated.  '
611
+        'Label :: Help text :: Explanation',
612
+        'Deprecation notice: Defaulting to "vault" is deprecated.  '
614 613
         'Starting in v1.0, the subcommand must be specified explicitly.',
615 614
     )
616 615
     DERIVEPASSPHRASE_EPILOG_01 = _Commented(
617
-        comments='',
616
+        '',
618 617
     )(
619
-        context='Label :: Help text :: Explanation',
620
-        single='Configuration is stored in a directory according to the '
618
+        'Label :: Help text :: Explanation',
619
+        'Configuration is stored in a directory according to the '
621 620
         '`DERIVEPASSPHRASE_PATH` variable, which defaults to '
622 621
         '`~/.derivepassphrase` on UNIX-like systems and '
623 622
         r'`C:\Users\<user>\AppData\Roaming\Derivepassphrase` on Windows.',
624 623
     )
625 624
     DERIVEPASSPHRASE_EXPORT_01 = _Commented(
626
-        comments='This is the first paragraph of the command help text, '
625
+        'This is the first paragraph of the command help text, '
627 626
         'but it also appears (in truncated form, if necessary) '
628 627
         'as one-line help text for this command.  '
629 628
         'The translation should thus be as meaningful as possible '
630 629
         'even if truncated.',
631 630
     )(
632
-        context='Label :: Help text :: Explanation',
633
-        single='Export a foreign configuration to standard output.',
631
+        'Label :: Help text :: Explanation',
632
+        'Export a foreign configuration to standard output.',
634 633
     )
635 634
     DERIVEPASSPHRASE_EXPORT_02 = _Commented(
636
-        comments='',
635
+        '',
637 636
     )(
638
-        context='Label :: Help text :: Explanation',
639
-        single='The only available subcommand is "vault", '
637
+        'Label :: Help text :: Explanation',
638
+        'The only available subcommand is "vault", '
640 639
         'which implements the vault-native configuration scheme.  '
641 640
         'If no subcommand is given, we default to "vault".',
642 641
     )
643 642
     DERIVEPASSPHRASE_EXPORT_03 = DERIVEPASSPHRASE_03
644 643
     DERIVEPASSPHRASE_EXPORT_VAULT_01 = _Commented(
645
-        comments='This is the first paragraph of the command help text, '
644
+        'This is the first paragraph of the command help text, '
646 645
         'but it also appears (in truncated form, if necessary) '
647 646
         'as one-line help text for this command.  '
648 647
         'The translation should thus be as meaningful as possible '
649 648
         'even if truncated.',
650 649
     )(
651
-        context='Label :: Help text :: Explanation',
652
-        single='Export a vault-native configuration to standard output.',
650
+        'Label :: Help text :: Explanation',
651
+        'Export a vault-native configuration to standard output.',
653 652
     )
654 653
     DERIVEPASSPHRASE_EXPORT_VAULT_02 = _Commented(
655
-        comments='',
654
+        '',
656 655
     )(
657
-        context='Label :: Help text :: Explanation',
658
-        single='Depending on the configuration format, '
656
+        'Label :: Help text :: Explanation',
657
+        'Depending on the configuration format, '
659 658
         '{path_metavar!s} may either be a file or a directory.  '
660 659
         'We support the vault "v0.2", "v0.3" and "storeroom" formats.',
661 660
         flags='python-brace-format',
662 661
     )
663 662
     DERIVEPASSPHRASE_EXPORT_VAULT_03 = _Commented(
664
-        comments='',
663
+        '',
665 664
     )(
666
-        context='Label :: Help text :: Explanation',
667
-        single='If {path_metavar!s} is explicitly given as `VAULT_PATH`, '
665
+        'Label :: Help text :: Explanation',
666
+        'If {path_metavar!s} is explicitly given as `VAULT_PATH`, '
668 667
         'then use the `VAULT_PATH` environment variable to '
669 668
         'determine the correct path.  '
670 669
         '(Use `./VAULT_PATH` or similar to indicate a file/directory '
... ...
@@ -672,29 +671,29 @@ class Label(enum.Enum):
672 671
         flags='python-brace-format',
673 672
     )
674 673
     DERIVEPASSPHRASE_VAULT_01 = _Commented(
675
-        comments='This is the first paragraph of the command help text, '
674
+        'This is the first paragraph of the command help text, '
676 675
         'but it also appears (in truncated form, if necessary) '
677 676
         'as one-line help text for this command.  '
678 677
         'The translation should thus be as meaningful as possible '
679 678
         'even if truncated.',
680 679
     )(
681
-        context='Label :: Help text :: Explanation',
682
-        single='Derive a passphrase using the vault derivation scheme.',
680
+        'Label :: Help text :: Explanation',
681
+        'Derive a passphrase using the vault derivation scheme.',
683 682
     )
684 683
     DERIVEPASSPHRASE_VAULT_02 = _Commented(
685
-        comments='',
684
+        '',
686 685
     )(
687
-        context='Label :: Help text :: Explanation',
688
-        single='If operating on global settings, or importing/exporting settings, '
686
+        'Label :: Help text :: Explanation',
687
+        'If operating on global settings, or importing/exporting settings, '
689 688
         'then {service_metavar!s} must be omitted.  '
690 689
         'Otherwise it is required.',
691 690
         flags='python-brace-format',
692 691
     )
693 692
     DERIVEPASSPHRASE_VAULT_EPILOG_01 = _Commented(
694
-        comments='',
693
+        '',
695 694
     )(
696
-        context='Label :: Help text :: Explanation',
697
-        single='WARNING: There is NO WAY to retrieve the generated passphrases '
695
+        'Label :: Help text :: Explanation',
696
+        'WARNING: There is NO WAY to retrieve the generated passphrases '
698 697
         'if the master passphrase, the SSH key, or the exact '
699 698
         'passphrase settings are lost, '
700 699
         'short of trying out all possible combinations.  '
... ...
@@ -702,387 +701,387 @@ class Label(enum.Enum):
702 701
         'the settings and the SSH key, if any.',
703 702
     )
704 703
     DERIVEPASSPHRASE_VAULT_EPILOG_02 = _Commented(
705
-        comments='',
704
+        '',
706 705
     )(
707
-        context='Label :: Help text :: Explanation',
708
-        single='The configuration is NOT encrypted, and you are '
706
+        'Label :: Help text :: Explanation',
707
+        'The configuration is NOT encrypted, and you are '
709 708
         'STRONGLY discouraged from using a stored passphrase.',
710 709
     )
711 710
     DEPRECATED_COMMAND_LABEL = _Commented(
712
-        comments='We use this format string to indicate, at the beginning '
711
+        'We use this format string to indicate, at the beginning '
713 712
         "of a command's help text, that this command is deprecated.",
714 713
     )(
715
-        context='Label :: Help text :: Marker',
716
-        single='(Deprecated) {text}',
714
+        'Label :: Help text :: Marker',
715
+        '(Deprecated) {text}',
717 716
         flags='python-brace-format',
718 717
     )
719 718
     DEBUG_OPTION_HELP_TEXT = _Commented(
720
-        comments='',
719
+        '',
721 720
     )(
722
-        context='Label :: Help text :: One-line description',
723
-        single='also emit debug information (implies --verbose)',
721
+        'Label :: Help text :: One-line description',
722
+        'also emit debug information (implies --verbose)',
724 723
     )
725 724
     EXPORT_VAULT_FORMAT_HELP_TEXT = _Commented(
726
-        comments='The defaults_hint is Label.EXPORT_VAULT_FORMAT_DEFAULTS_HELP_TEXT, '
725
+        'The defaults_hint is Label.EXPORT_VAULT_FORMAT_DEFAULTS_HELP_TEXT, '
727 726
         'the metavar is Label.EXPORT_VAULT_FORMAT_METAVAR_FMT.',
728 727
     )(
729
-        context='Label :: Help text :: One-line description',
730
-        single='try the following storage format {metavar!s}; '
728
+        'Label :: Help text :: One-line description',
729
+        'try the following storage format {metavar!s}; '
731 730
         'may be specified multiple times, '
732 731
         'formats will be tried in order {defaults_hint!s}',
733 732
         flags='python-brace-format',
734 733
     )
735 734
     EXPORT_VAULT_FORMAT_DEFAULTS_HELP_TEXT = _Commented(
736
-        comments='See EXPORT_VAULT_FORMAT_HELP_TEXT.  '
735
+        'See EXPORT_VAULT_FORMAT_HELP_TEXT.  '
737 736
         'The format names/labels "v0.3", "v0.2" and "storeroom" '
738 737
         'should not be translated.',
739 738
     )(
740
-        context='Label :: Help text :: One-line description',
741
-        single='(default: v0.3, v0.2, storeroom)',
739
+        'Label :: Help text :: One-line description',
740
+        '(default: v0.3, v0.2, storeroom)',
742 741
     )
743 742
     EXPORT_VAULT_KEY_HELP_TEXT = _Commented(
744
-        comments='The defaults_hint is Label.EXPORT_VAULT_KEY_DEFAULTS_HELP_TEXT, '
743
+        'The defaults_hint is Label.EXPORT_VAULT_KEY_DEFAULTS_HELP_TEXT, '
745 744
         'the metavar is Label.EXPORT_VAULT_KEY_METAVAR_K.',
746 745
     )(
747
-        context='Label :: Help text :: One-line description',
748
-        single='use {metavar!s} as the storage master key {defaults_hint!s}',
746
+        'Label :: Help text :: One-line description',
747
+        'use {metavar!s} as the storage master key {defaults_hint!s}',
749 748
         flags='python-brace-format',
750 749
     )
751 750
     EXPORT_VAULT_KEY_DEFAULTS_HELP_TEXT = _Commented(
752
-        comments='See EXPORT_VAULT_KEY_HELP_TEXT.',
751
+        'See EXPORT_VAULT_KEY_HELP_TEXT.',
753 752
     )(
754
-        context='Label :: Help text :: One-line description',
755
-        single='(default: check the `VAULT_KEY`, `LOGNAME`, `USER`, or '
753
+        'Label :: Help text :: One-line description',
754
+        '(default: check the `VAULT_KEY`, `LOGNAME`, `USER`, or '
756 755
         '`USERNAME` environment variables)',
757 756
     )
758 757
     HELP_OPTION_HELP_TEXT = _Commented(
759
-        comments='',
758
+        '',
760 759
     )(
761
-        context='Label :: Help text :: One-line description',
762
-        single='show this help text, then exit',
760
+        'Label :: Help text :: One-line description',
761
+        'show this help text, then exit',
763 762
     )
764 763
     QUIET_OPTION_HELP_TEXT = _Commented(
765
-        comments='',
764
+        '',
766 765
     )(
767
-        context='Label :: Help text :: One-line description',
768
-        single='suppress even warnings, emit only errors',
766
+        'Label :: Help text :: One-line description',
767
+        'suppress even warnings, emit only errors',
769 768
     )
770 769
     VERBOSE_OPTION_HELP_TEXT = _Commented(
771
-        comments='',
770
+        '',
772 771
     )(
773
-        context='Label :: Help text :: One-line description',
774
-        single='emit extra/progress information to standard error',
772
+        'Label :: Help text :: One-line description',
773
+        'emit extra/progress information to standard error',
775 774
     )
776 775
     VERSION_OPTION_HELP_TEXT = _Commented(
777
-        comments='',
776
+        '',
778 777
     )(
779
-        context='Label :: Help text :: One-line description',
780
-        single='show applicable version information, then exit',
778
+        'Label :: Help text :: One-line description',
779
+        'show applicable version information, then exit',
781 780
     )
782 781
 
783 782
     DERIVEPASSPHRASE_VAULT_PHRASE_HELP_TEXT = _Commented(
784
-        comments='',
783
+        '',
785 784
     )(
786
-        context='Label :: Help text :: One-line description',
787
-        single='prompt for a master passphrase',
785
+        'Label :: Help text :: One-line description',
786
+        'prompt for a master passphrase',
788 787
     )
789 788
     DERIVEPASSPHRASE_VAULT_KEY_HELP_TEXT = _Commented(
790
-        comments='',
789
+        '',
791 790
     )(
792
-        context='Label :: Help text :: One-line description',
793
-        single='select a suitable SSH key from the SSH agent',
791
+        'Label :: Help text :: One-line description',
792
+        'select a suitable SSH key from the SSH agent',
794 793
     )
795 794
     DERIVEPASSPHRASE_VAULT_LENGTH_HELP_TEXT = _Commented(
796
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
795
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
797 796
     )(
798
-        context='Label :: Help text :: One-line description',
799
-        single='ensure a passphrase length of {metavar!s} characters',
797
+        'Label :: Help text :: One-line description',
798
+        'ensure a passphrase length of {metavar!s} characters',
800 799
         flags='python-brace-format',
801 800
     )
802 801
     DERIVEPASSPHRASE_VAULT_REPEAT_HELP_TEXT = _Commented(
803
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
802
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
804 803
     )(
805
-        context='Label :: Help text :: One-line description',
806
-        single='forbid any run of {metavar!s} identical characters',
804
+        'Label :: Help text :: One-line description',
805
+        'forbid any run of {metavar!s} identical characters',
807 806
         flags='python-brace-format',
808 807
     )
809 808
     DERIVEPASSPHRASE_VAULT_LOWER_HELP_TEXT = _Commented(
810
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
809
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
811 810
     )(
812
-        context='Label :: Help text :: One-line description',
813
-        single='ensure at least {metavar!s} lowercase characters',
811
+        'Label :: Help text :: One-line description',
812
+        'ensure at least {metavar!s} lowercase characters',
814 813
         flags='python-brace-format',
815 814
     )
816 815
     DERIVEPASSPHRASE_VAULT_UPPER_HELP_TEXT = _Commented(
817
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
816
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
818 817
     )(
819
-        context='Label :: Help text :: One-line description',
820
-        single='ensure at least {metavar!s} uppercase characters',
818
+        'Label :: Help text :: One-line description',
819
+        'ensure at least {metavar!s} uppercase characters',
821 820
         flags='python-brace-format',
822 821
     )
823 822
     DERIVEPASSPHRASE_VAULT_NUMBER_HELP_TEXT = _Commented(
824
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
823
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
825 824
     )(
826
-        context='Label :: Help text :: One-line description',
827
-        single='ensure at least {metavar!s} digits',
825
+        'Label :: Help text :: One-line description',
826
+        'ensure at least {metavar!s} digits',
828 827
         flags='python-brace-format',
829 828
     )
830 829
     DERIVEPASSPHRASE_VAULT_SPACE_HELP_TEXT = _Commented(
831
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
830
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
832 831
     )(
833
-        context='Label :: Help text :: One-line description',
834
-        single='ensure at least {metavar!s} spaces',
832
+        'Label :: Help text :: One-line description',
833
+        'ensure at least {metavar!s} spaces',
835 834
         flags='python-brace-format',
836 835
     )
837 836
     DERIVEPASSPHRASE_VAULT_DASH_HELP_TEXT = _Commented(
838
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
837
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
839 838
     )(
840
-        context='Label :: Help text :: One-line description',
841
-        single='ensure at least {metavar!s} "-" or "_" characters',
839
+        'Label :: Help text :: One-line description',
840
+        'ensure at least {metavar!s} "-" or "_" characters',
842 841
         flags='python-brace-format',
843 842
     )
844 843
     DERIVEPASSPHRASE_VAULT_SYMBOL_HELP_TEXT = _Commented(
845
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
844
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
846 845
     )(
847
-        context='Label :: Help text :: One-line description',
848
-        single='ensure at least {metavar!s} symbol characters',
846
+        'Label :: Help text :: One-line description',
847
+        'ensure at least {metavar!s} symbol characters',
849 848
         flags='python-brace-format',
850 849
     )
851 850
 
852 851
     DERIVEPASSPHRASE_VAULT_NOTES_HELP_TEXT = _Commented(
853
-        comments='',
852
+        '',
854 853
     )(
855
-        context='Label :: Help text :: One-line description',
856
-        single='spawn an editor to edit notes for {service_metavar!s}',
854
+        'Label :: Help text :: One-line description',
855
+        'spawn an editor to edit notes for {service_metavar!s}',
857 856
         flags='python-brace-format',
858 857
     )
859 858
     DERIVEPASSPHRASE_VAULT_CONFIG_HELP_TEXT = _Commented(
860
-        comments='',
859
+        '',
861 860
     )(
862
-        context='Label :: Help text :: One-line description',
863
-        single='save the given settings for {service_metavar!s}, or global',
861
+        'Label :: Help text :: One-line description',
862
+        'save the given settings for {service_metavar!s}, or global',
864 863
         flags='python-brace-format',
865 864
     )
866 865
     DERIVEPASSPHRASE_VAULT_DELETE_HELP_TEXT = _Commented(
867
-        comments='',
866
+        '',
868 867
     )(
869
-        context='Label :: Help text :: One-line description',
870
-        single='delete the settings for {service_metavar!s}',
868
+        'Label :: Help text :: One-line description',
869
+        'delete the settings for {service_metavar!s}',
871 870
         flags='python-brace-format',
872 871
     )
873 872
     DERIVEPASSPHRASE_VAULT_DELETE_GLOBALS_HELP_TEXT = _Commented(
874
-        comments='',
873
+        '',
875 874
     )(
876
-        context='Label :: Help text :: One-line description',
877
-        single='delete the global settings',
875
+        'Label :: Help text :: One-line description',
876
+        'delete the global settings',
878 877
     )
879 878
     DERIVEPASSPHRASE_VAULT_DELETE_ALL_HELP_TEXT = _Commented(
880
-        comments='',
879
+        '',
881 880
     )(
882
-        context='Label :: Help text :: One-line description',
883
-        single='delete all settings',
881
+        'Label :: Help text :: One-line description',
882
+        'delete all settings',
884 883
     )
885 884
     DERIVEPASSPHRASE_VAULT_EXPORT_HELP_TEXT = _Commented(
886
-        comments='The metavar is Label.STORAGE_MANAGEMENT_METAVAR_SERVICE.',
885
+        'The metavar is Label.STORAGE_MANAGEMENT_METAVAR_SERVICE.',
887 886
     )(
888
-        context='Label :: Help text :: One-line description',
889
-        single='export all saved settings to {metavar!s}',
887
+        'Label :: Help text :: One-line description',
888
+        'export all saved settings to {metavar!s}',
890 889
         flags='python-brace-format',
891 890
     )
892 891
     DERIVEPASSPHRASE_VAULT_IMPORT_HELP_TEXT = _Commented(
893
-        comments='The metavar is Label.STORAGE_MANAGEMENT_METAVAR_SERVICE.',
892
+        'The metavar is Label.STORAGE_MANAGEMENT_METAVAR_SERVICE.',
894 893
     )(
895
-        context='Label :: Help text :: One-line description',
896
-        single='import saved settings from {metavar!s}',
894
+        'Label :: Help text :: One-line description',
895
+        'import saved settings from {metavar!s}',
897 896
         flags='python-brace-format',
898 897
     )
899 898
     DERIVEPASSPHRASE_VAULT_OVERWRITE_HELP_TEXT = _Commented(
900
-        comments='The corresponding option is displayed as '
899
+        'The corresponding option is displayed as '
901 900
         '"--overwrite-existing / --merge-existing", so you may want to '
902 901
         'hint that the default (merge) is the second of those options.',
903 902
     )(
904
-        context='Label :: Help text :: One-line description',
905
-        single='overwrite or merge (default) the existing configuration',
903
+        'Label :: Help text :: One-line description',
904
+        'overwrite or merge (default) the existing configuration',
906 905
     )
907 906
     DERIVEPASSPHRASE_VAULT_UNSET_HELP_TEXT = _Commented(
908
-        comments='The corresponding option is displayed as '
907
+        'The corresponding option is displayed as '
909 908
         '"--unset=phrase|key|...|symbol", so the "given setting" is '
910 909
         'referring to "phrase", "key", "lower", ..., or "symbol", '
911 910
         'respectively.  '
912 911
         '"with --config" here means that the user must also specify '
913 912
         '"--config" for this option to have any effect.',
914 913
     )(
915
-        context='Label :: Help text :: One-line description',
916
-        single='with --config, also unsets the given setting; '
914
+        'Label :: Help text :: One-line description',
915
+        'with --config, also unsets the given setting; '
917 916
         'may be specified multiple times',
918 917
     )
919 918
     DERIVEPASSPHRASE_VAULT_EXPORT_AS_HELP_TEXT = _Commented(
920
-        comments='The corresponding option is displayed as '
919
+        'The corresponding option is displayed as '
921 920
         '"--export-as=json|sh", so json refers to the JSON format (default) '
922 921
         'and sh refers to the POSIX sh format.',
923 922
     )(
924
-        context='Label :: Help text :: One-line description',
925
-        single='when exporting, export as JSON (default) or POSIX sh',
923
+        'Label :: Help text :: One-line description',
924
+        'when exporting, export as JSON (default) or POSIX sh',
926 925
     )
927 926
 
928 927
     EXPORT_VAULT_FORMAT_METAVAR_FMT = _Commented(
929
-        comments='',
928
+        '',
930 929
     )(
931
-        context='Label :: Help text :: Metavar :: export vault',
932
-        single='FMT',
930
+        'Label :: Help text :: Metavar :: export vault',
931
+        'FMT',
933 932
     )
934 933
     EXPORT_VAULT_KEY_METAVAR_K = _Commented(
935
-        comments='See Label.EXPORT_VAULT_KEY_HELP_TEXT.',
934
+        'See Label.EXPORT_VAULT_KEY_HELP_TEXT.',
936 935
     )(
937
-        context='Label :: Help text :: Metavar :: export vault',
938
-        single='K',
936
+        'Label :: Help text :: Metavar :: export vault',
937
+        'K',
939 938
     )
940 939
     EXPORT_VAULT_METAVAR_PATH = _Commented(
941
-        comments='Used as "path_metavar" in '
940
+        'Used as "path_metavar" in '
942 941
         'Label.DERIVEPASSPHRASE_EXPORT_VAULT_02 and others.',
943 942
     )(
944
-        context='Label :: Help text :: Metavar :: export vault',
945
-        single='PATH',
943
+        'Label :: Help text :: Metavar :: export vault',
944
+        'PATH',
946 945
     )
947 946
     PASSPHRASE_GENERATION_METAVAR_NUMBER = _Commented(
948
-        comments='This metavar is also used in a matching epilog.',
947
+        'This metavar is also used in a matching epilog.',
949 948
     )(
950
-        context='Label :: Help text :: Metavar :: vault',
951
-        single='NUMBER',
949
+        'Label :: Help text :: Metavar :: vault',
950
+        'NUMBER',
952 951
     )
953 952
     STORAGE_MANAGEMENT_METAVAR_PATH = _Commented(
954
-        comments='This metavar is also used in multiple one-line help texts.',
953
+        'This metavar is also used in multiple one-line help texts.',
955 954
     )(
956
-        context='Label :: Help text :: Metavar :: vault',
957
-        single='PATH',
955
+        'Label :: Help text :: Metavar :: vault',
956
+        'PATH',
958 957
     )
959 958
     VAULT_METAVAR_SERVICE = _Commented(
960
-        comments='This metavar is also used in multiple one-line help texts.',
959
+        'This metavar is also used in multiple one-line help texts.',
961 960
     )(
962
-        context='Label :: Help text :: Metavar :: vault',
963
-        single='SERVICE',
961
+        'Label :: Help text :: Metavar :: vault',
962
+        'SERVICE',
964 963
     )
965 964
     CONFIGURATION_EPILOG = _Commented(
966
-        comments='',
965
+        '',
967 966
     )(
968
-        context='Label :: Help text :: Explanation',
969
-        single='Use $VISUAL or $EDITOR to configure the spawned editor.',
967
+        'Label :: Help text :: Explanation',
968
+        'Use $VISUAL or $EDITOR to configure the spawned editor.',
970 969
     )
971 970
     PASSPHRASE_GENERATION_EPILOG = _Commented(
972
-        comments='The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
971
+        'The metavar is Label.PASSPHRASE_GENERATION_METAVAR_NUMBER.',
973 972
     )(
974
-        context='Label :: Help text :: Explanation',
975
-        single='Use {metavar!s}=0 to exclude a character type from the output.',
973
+        'Label :: Help text :: Explanation',
974
+        'Use {metavar!s}=0 to exclude a character type from the output.',
976 975
         flags='python-brace-format',
977 976
     )
978 977
     STORAGE_MANAGEMENT_EPILOG = _Commented(
979
-        comments='The metavar is Label.STORAGE_MANAGEMENT_METAVAR_PATH.',
978
+        'The metavar is Label.STORAGE_MANAGEMENT_METAVAR_PATH.',
980 979
     )(
981
-        context='Label :: Help text :: Explanation',
982
-        single='Using "-" as {metavar!s} for standard input/standard output '
980
+        'Label :: Help text :: Explanation',
981
+        'Using "-" as {metavar!s} for standard input/standard output '
983 982
         'is supported.',
984 983
         flags='python-brace-format',
985 984
     )
986 985
     COMMANDS_LABEL = _Commented(
987
-        comments='',
986
+        '',
988 987
     )(
989
-        context='Label :: Help text :: Option group name',
990
-        single='Commands',
988
+        'Label :: Help text :: Option group name',
989
+        'Commands',
991 990
     )
992 991
     COMPATIBILITY_OPTION_LABEL = _Commented(
993
-        comments='',
992
+        '',
994 993
     )(
995
-        context='Label :: Help text :: Option group name',
996
-        single='Compatibility and extension options',
994
+        'Label :: Help text :: Option group name',
995
+        'Compatibility and extension options',
997 996
     )
998 997
     CONFIGURATION_LABEL = _Commented(
999
-        comments='',
998
+        '',
1000 999
     )(
1001
-        context='Label :: Help text :: Option group name',
1002
-        single='Configuration',
1000
+        'Label :: Help text :: Option group name',
1001
+        'Configuration',
1003 1002
     )
1004 1003
     LOGGING_LABEL = _Commented(
1005
-        comments='',
1004
+        '',
1006 1005
     )(
1007
-        context='Label :: Help text :: Option group name',
1008
-        single='Logging',
1006
+        'Label :: Help text :: Option group name',
1007
+        'Logging',
1009 1008
     )
1010 1009
     OPTIONS_LABEL = _Commented(
1011
-        comments='',
1010
+        '',
1012 1011
     )(
1013
-        context='Label :: Help text :: Option group name',
1014
-        single='Options',
1012
+        'Label :: Help text :: Option group name',
1013
+        'Options',
1015 1014
     )
1016 1015
     OTHER_OPTIONS_LABEL = _Commented(
1017
-        comments='',
1016
+        '',
1018 1017
     )(
1019
-        context='Label :: Help text :: Option group name',
1020
-        single='Other options',
1018
+        'Label :: Help text :: Option group name',
1019
+        'Other options',
1021 1020
     )
1022 1021
     PASSPHRASE_GENERATION_LABEL = _Commented(
1023
-        comments='',
1022
+        '',
1024 1023
     )(
1025
-        context='Label :: Help text :: Option group name',
1026
-        single='Passphrase generation',
1024
+        'Label :: Help text :: Option group name',
1025
+        'Passphrase generation',
1027 1026
     )
1028 1027
     STORAGE_MANAGEMENT_LABEL = _Commented(
1029
-        comments='',
1028
+        '',
1030 1029
     )(
1031
-        context='Label :: Help text :: Option group name',
1032
-        single='Storage management',
1030
+        'Label :: Help text :: Option group name',
1031
+        'Storage management',
1033 1032
     )
1034 1033
     VERSION_INFO_TEXT = _Commented(
1035
-        comments='',
1034
+        '',
1036 1035
     )(
1037
-        context='Label :: Info Message',
1038
-        single='{PROG_NAME!s} {__version__}',  # noqa: RUF027
1036
+        'Label :: Info Message',
1037
+        '{PROG_NAME!s} {__version__}',  # noqa: RUF027
1039 1038
         flags='python-brace-format',
1040 1039
     )
1041 1040
     CONFIRM_THIS_CHOICE_PROMPT_TEXT = _Commented(
1042
-        comments='There is no support for "yes" or "no" in other languages '
1041
+        'There is no support for "yes" or "no" in other languages '
1043 1042
         'than English, so it is advised that your translation makes it '
1044 1043
         'clear that only the strings "y", "yes", "n" or "no" are supported, '
1045 1044
         'even if the prompt becomes a bit longer.',
1046 1045
     )(
1047
-        context='Label :: Interactive prompt',
1048
-        single='Confirm this choice? (y/N)',
1046
+        'Label :: Interactive prompt',
1047
+        'Confirm this choice? (y/N)',
1049 1048
     )
1050 1049
     SUITABLE_SSH_KEYS_LABEL = _Commented(
1051
-        comments='This label is the heading of the list of suitable SSH keys.',
1050
+        'This label is the heading of the list of suitable SSH keys.',
1052 1051
     )(
1053
-        context='Label :: Interactive prompt',
1054
-        single='Suitable SSH keys:',
1052
+        'Label :: Interactive prompt',
1053
+        'Suitable SSH keys:',
1055 1054
     )
1056 1055
     YOUR_SELECTION_PROMPT_TEXT = _Commented(
1057
-        comments='',
1056
+        '',
1058 1057
     )(
1059
-        context='Label :: Interactive prompt',
1060
-        single='Your selection? (1-{n}, leave empty to abort)',
1058
+        'Label :: Interactive prompt',
1059
+        'Your selection? (1-{n}, leave empty to abort)',
1061 1060
         flags='python-brace-format',
1062 1061
     )
1063 1062
 
1064 1063
 
1065 1064
 class DebugMsgTemplate(enum.Enum):
1066 1065
     BUCKET_ITEM_FOUND = _Commented(
1067
-        comments='This message is emitted by the vault configuration exporter '
1066
+        'This message is emitted by the vault configuration exporter '
1068 1067
         'for "storeroom"-type configuration directories.  '
1069 1068
         'The system stores entries in different "buckets" of a hash table.  '
1070 1069
         'Here, we report on a single item (path and value) we discovered '
1071 1070
         'after decrypting the whole bucket.  '
1072 1071
         '(We ensure the path and value are printable as-is.)',
1073 1072
     )(
1074
-        context='Debug message',
1075
-        single='Found bucket item: {path} -> {value}',
1073
+        'Debug message',
1074
+        'Found bucket item: {path} -> {value}',
1076 1075
         flags='python-brace-format',
1077 1076
     )
1078 1077
     DECRYPT_BUCKET_ITEM_INFO = _Commented(
1079
-        comments='"AES256-CBC" and "PKCS#7" are, in essence, names of formats, '
1078
+        '"AES256-CBC" and "PKCS#7" are, in essence, names of formats, '
1080 1079
         'and should not be translated.  '
1081 1080
         '"IV" means "initialization vector", and is specifically '
1082 1081
         'a cryptographic term, as are "plaintext" and "ciphertext".',
1083 1082
     )(
1084
-        context='Debug message',
1085
-        single="""\
1083
+        'Debug message',
1084
+        """\
1086 1085
 Decrypt bucket item contents:
1087 1086
 
1088 1087
   \b
... ...
@@ -1095,10 +1094,10 @@ Decrypt bucket item contents:
1095 1094
         flags='python-brace-format',
1096 1095
     )
1097 1096
     DECRYPT_BUCKET_ITEM_KEY_INFO = _Commented(
1098
-        comments='',
1097
+        '',
1099 1098
     )(
1100
-        context='Debug message',
1101
-        single="""\
1099
+        'Debug message',
1100
+        """\
1102 1101
 Decrypt bucket item:
1103 1102
 
1104 1103
   \b
... ...
@@ -1109,7 +1108,7 @@ Decrypt bucket item:
1109 1108
         flags='python-brace-format',
1110 1109
     )
1111 1110
     DECRYPT_BUCKET_ITEM_MAC_INFO = _Commented(
1112
-        comments='The MAC stands for "message authentication code", '
1111
+        'The MAC stands for "message authentication code", '
1113 1112
         'which guarantees the authenticity of the message to anyone '
1114 1113
         'who holds the corresponding key, similar to a digital signature.  '
1115 1114
         'The acronym "MAC" is assumed to be well-known to the '
... ...
@@ -1118,8 +1117,8 @@ Decrypt bucket item:
1118 1117
         'Please use your judgement as to whether to translate this term '
1119 1118
         'or not, expanded or not.',
1120 1119
     )(
1121
-        context='Debug message',
1122
-        single="""\
1120
+        'Debug message',
1121
+        """\
1123 1122
 Decrypt bucket item contents:
1124 1123
 
1125 1124
   \b
... ...
@@ -1131,13 +1130,13 @@ Decrypt bucket item contents:
1131 1130
         flags='python-brace-format',
1132 1131
     )
1133 1132
     DECRYPT_BUCKET_ITEM_SESSION_KEYS_INFO = _Commented(
1134
-        comments='"AES256-CBC" and "PKCS#7" are, in essence, names of formats, '
1133
+        '"AES256-CBC" and "PKCS#7" are, in essence, names of formats, '
1135 1134
         'and should not be translated.  '
1136 1135
         '"IV" means "initialization vector", and is specifically '
1137 1136
         'a cryptographic term, as are "plaintext" and "ciphertext".',
1138 1137
     )(
1139
-        context='Debug message',
1140
-        single="""\
1138
+        'Debug message',
1139
+        """\
1141 1140
 Decrypt bucket item session keys:
1142 1141
 
1143 1142
   \b
... ...
@@ -1151,7 +1150,7 @@ Decrypt bucket item session keys:
1151 1150
         flags='python-brace-format',
1152 1151
     )
1153 1152
     DECRYPT_BUCKET_ITEM_SESSION_KEYS_MAC_INFO = _Commented(
1154
-        comments='The MAC stands for "message authentication code", '
1153
+        'The MAC stands for "message authentication code", '
1155 1154
         'which guarantees the authenticity of the message to anyone '
1156 1155
         'who holds the corresponding key, similar to a digital signature.  '
1157 1156
         'The acronym "MAC" is assumed to be well-known to the '
... ...
@@ -1160,8 +1159,8 @@ Decrypt bucket item session keys:
1160 1159
         'Please use your judgement as to whether to translate this term '
1161 1160
         'or not, expanded or not.',
1162 1161
     )(
1163
-        context='Debug message',
1164
-        single="""\
1162
+        'Debug message',
1163
+        """\
1165 1164
 Decrypt bucket item session keys:
1166 1165
 
1167 1166
   \b
... ...
@@ -1173,10 +1172,10 @@ Decrypt bucket item session keys:
1173 1172
         flags='python-brace-format',
1174 1173
     )
1175 1174
     DERIVED_MASTER_KEYS_KEYS = _Commented(
1176
-        comments='',
1175
+        '',
1177 1176
     )(
1178
-        context='Debug message',
1179
-        single="""\
1177
+        'Debug message',
1178
+        """\
1180 1179
 Derived master keys' keys:
1181 1180
 
1182 1181
   \b
... ...
@@ -1188,7 +1187,7 @@ Derived master keys' keys:
1188 1187
         flags='python-brace-format',
1189 1188
     )
1190 1189
     DIRECTORY_CONTENTS_CHECK_OK = _Commented(
1191
-        comments='This message is emitted by the vault configuration exporter '
1190
+        'This message is emitted by the vault configuration exporter '
1192 1191
         'for "storeroom"-type configuration directories, '
1193 1192
         'while "assembling" the items stored in the configuration '
1194 1193
         """according to the item's "path".  """
... ...
@@ -1198,12 +1197,12 @@ Derived master keys' keys:
1198 1197
         'Now, at the end, we actually confirm the claim.  '
1199 1198
         '(We would have already thrown an error here otherwise.)',
1200 1199
     )(
1201
-        context='Debug message',
1202
-        single='Directory contents check OK: {path} -> {contents}',
1200
+        'Debug message',
1201
+        'Directory contents check OK: {path} -> {contents}',
1203 1202
         flags='python-brace-format',
1204 1203
     )
1205 1204
     MASTER_KEYS_DATA_MAC_INFO = _Commented(
1206
-        comments='The MAC stands for "message authentication code", '
1205
+        'The MAC stands for "message authentication code", '
1207 1206
         'which guarantees the authenticity of the message to anyone '
1208 1207
         'who holds the corresponding key, similar to a digital signature.  '
1209 1208
         'The acronym "MAC" is assumed to be well-known to the '
... ...
@@ -1212,8 +1211,8 @@ Derived master keys' keys:
1212 1211
         'Please use your judgement as to whether to translate this term '
1213 1212
         'or not, expanded or not.',
1214 1213
     )(
1215
-        context='Debug message',
1216
-        single="""\
1214
+        'Debug message',
1215
+        """\
1217 1216
 Master keys data:
1218 1217
 
1219 1218
   \b
... ...
@@ -1225,7 +1224,7 @@ Master keys data:
1225 1224
         flags='python-brace-format',
1226 1225
     )
1227 1226
     POSTPONING_DIRECTORY_CONTENTS_CHECK = _Commented(
1228
-        comments='This message is emitted by the vault configuration exporter '
1227
+        'This message is emitted by the vault configuration exporter '
1229 1228
         'for "storeroom"-type configuration directories, '
1230 1229
         'while "assembling" the items stored in the configuration '
1231 1230
         """according to the item's "path".  """
... ...
@@ -1235,44 +1234,44 @@ Master keys data:
1235 1234
         'When emitting this message, we merely indicate that we saved '
1236 1235
         'the "claimed" list for this directory for later.',
1237 1236
     )(
1238
-        context='Debug message',
1239
-        single='Postponing directory contents check: {path} -> {contents}',
1237
+        'Debug message',
1238
+        'Postponing directory contents check: {path} -> {contents}',
1240 1239
         flags='python-brace-format',
1241 1240
     )
1242 1241
     SETTING_CONFIG_STRUCTURE_CONTENTS = _Commented(
1243
-        comments='This message is emitted by the vault configuration exporter '
1242
+        'This message is emitted by the vault configuration exporter '
1244 1243
         'for "storeroom"-type configuration directories, '
1245 1244
         'while "assembling" the items stored in the configuration '
1246 1245
         """according to the item's "path".  """
1247 1246
         'We confirm that we set the entry at the given path '
1248 1247
         'to the given value.',
1249 1248
     )(
1250
-        context='Debug message',
1251
-        single='Setting contents: {path} -> {value}',
1249
+        'Debug message',
1250
+        'Setting contents: {path} -> {value}',
1252 1251
         flags='python-brace-format',
1253 1252
     )
1254 1253
     SETTING_CONFIG_STRUCTURE_CONTENTS_EMPTY_DIRECTORY = _Commented(
1255
-        comments='This message is emitted by the vault configuration exporter '
1254
+        'This message is emitted by the vault configuration exporter '
1256 1255
         'for "storeroom"-type configuration directories, '
1257 1256
         'while "assembling" the items stored in the configuration '
1258 1257
         """according to the item's "path".  """
1259 1258
         'We confirm that we set up a currently empty directory '
1260 1259
         'at the given path.',
1261 1260
     )(
1262
-        context='Debug message',
1263
-        single='Setting contents (empty directory): {path}',
1261
+        'Debug message',
1262
+        'Setting contents (empty directory): {path}',
1264 1263
         flags='python-brace-format',
1265 1264
     )
1266 1265
     VAULT_NATIVE_EVP_BYTESTOKEY_INIT = _Commented(
1267
-        comments='This message is emitted by the vault configuration exporter '
1266
+        'This message is emitted by the vault configuration exporter '
1268 1267
         'for "native"-type configuration directories: '
1269 1268
         'in v0.2, the non-standard and deprecated "EVP_bytestokey" function '
1270 1269
         'from OpenSSL must be reimplemented from scratch.  '
1271 1270
         'The terms "salt" and "IV" (initialization vector) '
1272 1271
         'are cryptographic terms.',
1273 1272
     )(
1274
-        context='Debug message',
1275
-        single="""\
1273
+        'Debug message',
1274
+        """\
1276 1275
 evp_bytestokey_md5 (initialization):
1277 1276
 
1278 1277
   \b
... ...
@@ -1286,7 +1285,7 @@ evp_bytestokey_md5 (initialization):
1286 1285
         flags='python-brace-format',
1287 1286
     )
1288 1287
     VAULT_NATIVE_EVP_BYTESTOKEY_RESULT = _Commented(
1289
-        comments='This message is emitted by the vault configuration exporter '
1288
+        'This message is emitted by the vault configuration exporter '
1290 1289
         'for "native"-type configuration directories: '
1291 1290
         'in v0.2, the non-standard and deprecated "EVP_bytestokey" function '
1292 1291
         'from OpenSSL must be reimplemented from scratch.  '
... ...
@@ -1294,8 +1293,8 @@ evp_bytestokey_md5 (initialization):
1294 1293
         'are cryptographic terms.'
1295 1294
         'This function reports on the final results.',
1296 1295
     )(
1297
-        context='Debug message',
1298
-        single="""\
1296
+        'Debug message',
1297
+        """\
1299 1298
 evp_bytestokey_md5 (result):
1300 1299
 
1301 1300
   \b
... ...
@@ -1305,7 +1304,7 @@ evp_bytestokey_md5 (result):
1305 1304
         flags='python-brace-format',
1306 1305
     )
1307 1306
     VAULT_NATIVE_EVP_BYTESTOKEY_ROUND = _Commented(
1308
-        comments='This message is emitted by the vault configuration exporter '
1307
+        'This message is emitted by the vault configuration exporter '
1309 1308
         'for "native"-type configuration directories: '
1310 1309
         'in v0.2, the non-standard and deprecated "EVP_bytestokey" function '
1311 1310
         'from OpenSSL must be reimplemented from scratch.  '
... ...
@@ -1314,8 +1313,8 @@ evp_bytestokey_md5 (result):
1314 1313
         'This function reports on the updated buffer length and contents '
1315 1314
         'after executing one round of hashing.',
1316 1315
     )(
1317
-        context='Debug message',
1318
-        single="""\
1316
+        'Debug message',
1317
+        """\
1319 1318
 evp_bytestokey_md5 (round update):
1320 1319
 
1321 1320
   \b
... ...
@@ -1325,14 +1324,14 @@ evp_bytestokey_md5 (round update):
1325 1324
         flags='python-brace-format',
1326 1325
     )
1327 1326
     VAULT_NATIVE_CHECKING_MAC_DETAILS = _Commented(
1328
-        comments='This message is emitted by the vault configuration exporter '
1327
+        'This message is emitted by the vault configuration exporter '
1329 1328
         'for "native"-type configuration directories.  '
1330 1329
         'It is preceded by the info message '
1331 1330
         'VAULT_NATIVE_PARSING_IV_PAYLOAD_MAC; see the commentary there '
1332 1331
         'concerning the terms and thoughts on translating them.',
1333 1332
     )(
1334
-        context='Debug message',
1335
-        single="""\
1333
+        'Debug message',
1334
+        """\
1336 1335
 MAC details:
1337 1336
 
1338 1337
   \b
... ...
@@ -1342,23 +1341,23 @@ MAC details:
1342 1341
         flags='python-brace-format',
1343 1342
     )
1344 1343
     VAULT_NATIVE_PADDED_PLAINTEXT = _Commented(
1345
-        comments='This message is emitted by the vault configuration exporter '
1344
+        'This message is emitted by the vault configuration exporter '
1346 1345
         'for "native"-type configuration directories.  '
1347 1346
         '"padding" and "plaintext" are cryptographic terms.',
1348 1347
     )(
1349
-        context='Debug message',
1350
-        single='Padded plaintext: {contents}',
1348
+        'Debug message',
1349
+        'Padded plaintext: {contents}',
1351 1350
         flags='python-brace-format',
1352 1351
     )
1353 1352
     VAULT_NATIVE_PARSE_BUFFER = _Commented(
1354
-        comments='This message is emitted by the vault configuration exporter '
1353
+        'This message is emitted by the vault configuration exporter '
1355 1354
         'for "native"-type configuration directories.  '
1356 1355
         'It is preceded by the info message '
1357 1356
         'VAULT_NATIVE_PARSING_IV_PAYLOAD_MAC; see the commentary there '
1358 1357
         'concerning the terms and thoughts on translating them.',
1359 1358
     )(
1360
-        context='Debug message',
1361
-        single="""\
1359
+        'Debug message',
1360
+        """\
1362 1361
 Buffer: {contents}
1363 1362
 
1364 1363
   \b
... ...
@@ -1369,19 +1368,19 @@ Buffer: {contents}
1369 1368
         flags='python-brace-format',
1370 1369
     )
1371 1370
     VAULT_NATIVE_PLAINTEXT = _Commented(
1372
-        comments='This message is emitted by the vault configuration exporter '
1371
+        'This message is emitted by the vault configuration exporter '
1373 1372
         'for "native"-type configuration directories.  '
1374 1373
         '"plaintext" is a cryptographic term.',
1375 1374
     )(
1376
-        context='Debug message',
1377
-        single='Plaintext: {contents}',
1375
+        'Debug message',
1376
+        'Plaintext: {contents}',
1378 1377
         flags='python-brace-format',
1379 1378
     )
1380 1379
     VAULT_NATIVE_PBKDF2_CALL = _Commented(
1381
-        comments='',
1380
+        '',
1382 1381
     )(
1383
-        context='Debug message',
1384
-        single="""\
1382
+        'Debug message',
1383
+        """\
1385 1384
 Master key derivation:
1386 1385
 
1387 1386
   \b
... ...
@@ -1392,15 +1391,15 @@ Master key derivation:
1392 1391
         flags='python-brace-format',
1393 1392
     )
1394 1393
     VAULT_NATIVE_V02_PAYLOAD_MAC_POSTPROCESSING = _Commented(
1395
-        comments='This message is emitted by the vault configuration exporter '
1394
+        'This message is emitted by the vault configuration exporter '
1396 1395
         'for "native"-type configuration directories.  '
1397 1396
         'It is preceded by the info message '
1398 1397
         'VAULT_NATIVE_PARSING_IV_PAYLOAD_MAC and the debug message '
1399 1398
         'PARSING_NATIVE_PARSE_BUFFER; see the commentary there concerning '
1400 1399
         'the terms and thoughts on translating them.',
1401 1400
     )(
1402
-        context='Debug message',
1403
-        single="""\
1401
+        'Debug message',
1402
+        """\
1404 1403
 Postprocessing buffer (v0.2):
1405 1404
 
1406 1405
   \b
... ...
@@ -1413,7 +1412,7 @@ Postprocessing buffer (v0.2):
1413 1412
 
1414 1413
 class InfoMsgTemplate(enum.Enum):
1415 1414
     ASSEMBLING_CONFIG_STRUCTURE = _Commented(
1416
-        comments='This message is emitted by the vault configuration exporter '
1415
+        'This message is emitted by the vault configuration exporter '
1417 1416
         'for "storeroom"-type configuration directories.  '
1418 1417
         'The system stores entries in different "buckets" of a hash table.  '
1419 1418
         'After the respective items in the buckets have been decrypted, '
... ...
@@ -1422,51 +1421,51 @@ class InfoMsgTemplate(enum.Enum):
1422 1421
         'existing directory tree to rely on, but rather must '
1423 1422
         'build it on-the-fly), hence the term "assembling".',
1424 1423
     )(
1425
-        context='Info message',
1426
-        single='Assembling config structure',
1424
+        'Info message',
1425
+        'Assembling config structure',
1427 1426
     )
1428 1427
     CANNOT_LOAD_AS_VAULT_CONFIG = _Commented(
1429
-        comments='"fmt" is a string such as "v0.2" or "storeroom", '
1428
+        '"fmt" is a string such as "v0.2" or "storeroom", '
1430 1429
         'indicating the format which we tried to load the '
1431 1430
         'vault configuration as.',
1432 1431
     )(
1433
-        context='Info message',
1434
-        single='Cannot load {path!r} as a {fmt!s} vault configuration.',
1432
+        'Info message',
1433
+        'Cannot load {path!r} as a {fmt!s} vault configuration.',
1435 1434
         flags='python-brace-format',
1436 1435
     )
1437 1436
     CHECKING_CONFIG_STRUCTURE_CONSISTENCY = _Commented(
1438
-        comments='This message is emitted by the vault configuration exporter '
1437
+        'This message is emitted by the vault configuration exporter '
1439 1438
         'for "storeroom"-type configuration directories.  '
1440 1439
         'Having "assembled" the configuration items according to '
1441 1440
         'their claimed paths and contents, we then check if the '
1442 1441
         'assembled structure is internally consistent.',
1443 1442
     )(
1444
-        context='Info message',
1445
-        single='Checking config structure consistency',
1443
+        'Info message',
1444
+        'Checking config structure consistency',
1446 1445
     )
1447 1446
     DECRYPTING_BUCKET = _Commented(
1448
-        comments='This message is emitted by the vault configuration exporter '
1447
+        'This message is emitted by the vault configuration exporter '
1449 1448
         'for "storeroom"-type configuration directories.  '
1450 1449
         'The system stores entries in different "buckets" of a hash table.  '
1451 1450
         'We parse the directory bucket by bucket.  '
1452 1451
         'All buckets are numbered in hexadecimal, and typically there are '
1453 1452
         '32 buckets, so 2-digit hex numbers.',
1454 1453
     )(
1455
-        context='Info message',
1456
-        single='Decrypting bucket {bucket_number}',
1454
+        'Info message',
1455
+        'Decrypting bucket {bucket_number}',
1457 1456
         flags='python-brace-format',
1458 1457
     )
1459 1458
     PARSING_MASTER_KEYS_DATA = _Commented(
1460
-        comments='This message is emitted by the vault configuration exporter '
1459
+        'This message is emitted by the vault configuration exporter '
1461 1460
         'for "storeroom"-type configuration directories.  '
1462 1461
         '`.keys` is a filename, from which data about the master keys '
1463 1462
         'for this configuration are loaded.',
1464 1463
     )(
1465
-        context='Info message',
1466
-        single='Parsing master keys data from .keys',
1464
+        'Info message',
1465
+        'Parsing master keys data from .keys',
1467 1466
     )
1468 1467
     PIP_INSTALL_EXTRA = _Commented(
1469
-        comments='This message immediately follows an error message about '
1468
+        'This message immediately follows an error message about '
1470 1469
         'a missing library that needs to be installed.  '
1471 1470
         'The Python Package Index (PyPI) supports declaring sets of '
1472 1471
         'optional dependencies as "extras", so users installing from PyPI '
... ...
@@ -1475,38 +1474,38 @@ class InfoMsgTemplate(enum.Enum):
1475 1474
         'missing libraries automatically, '
1476 1475
         'hence this suggestion to PyPI users.',
1477 1476
     )(
1478
-        context='Info message',
1479
-        single='For users installing from PyPI, see the {extra_name!r} extra.',
1477
+        'Info message',
1478
+        'For users installing from PyPI, see the {extra_name!r} extra.',
1480 1479
         flags='python-brace-format',
1481 1480
     )
1482 1481
     SUCCESSFULLY_MIGRATED = _Commented(
1483
-        comments='This info message immediately follows the '
1482
+        'This info message immediately follows the '
1484 1483
         '"Using deprecated v0.1-style ..." deprecation warning.',
1485 1484
     )(
1486
-        context='Info message',
1487
-        single='Successfully migrated to {path!r}.',
1485
+        'Info message',
1486
+        'Successfully migrated to {path!r}.',
1488 1487
         flags='python-brace-format',
1489 1488
     )
1490 1489
     VAULT_NATIVE_CHECKING_MAC = _Commented(
1491
-        comments='',
1490
+        '',
1492 1491
     )(
1493
-        context='Info message',
1494
-        single='Checking MAC',
1492
+        'Info message',
1493
+        'Checking MAC',
1495 1494
     )
1496 1495
     VAULT_NATIVE_DECRYPTING_CONTENTS = _Commented(
1497
-        comments='',
1496
+        '',
1498 1497
     )(
1499
-        context='Info message',
1500
-        single='Decrypting contents',
1498
+        'Info message',
1499
+        'Decrypting contents',
1501 1500
     )
1502 1501
     VAULT_NATIVE_DERIVING_KEYS = _Commented(
1503
-        comments='',
1502
+        '',
1504 1503
     )(
1505
-        context='Info message',
1506
-        single='Deriving an encryption and signing key',
1504
+        'Info message',
1505
+        'Deriving an encryption and signing key',
1507 1506
     )
1508 1507
     VAULT_NATIVE_PARSING_IV_PAYLOAD_MAC = _Commented(
1509
-        comments='This message is emitted by the vault configuration exporter '
1508
+        'This message is emitted by the vault configuration exporter '
1510 1509
         'for "native"-type configuration directories.  '
1511 1510
         '"IV" means "initialization vector", and "MAC" means '
1512 1511
         '"message authentication code".  '
... ...
@@ -1517,26 +1516,26 @@ class InfoMsgTemplate(enum.Enum):
1517 1516
         'Please use your judgement as to whether to translate these terms '
1518 1517
         'or not, expanded or not.',
1519 1518
     )(
1520
-        context='Info message',
1521
-        single='Parsing IV, payload and MAC from the file contents',
1519
+        'Info message',
1520
+        'Parsing IV, payload and MAC from the file contents',
1522 1521
     )
1523 1522
 
1524 1523
 
1525 1524
 class WarnMsgTemplate(enum.Enum):
1526 1525
     EMPTY_SERVICE_NOT_SUPPORTED = _Commented(
1527
-        comments='',
1526
+        '',
1528 1527
     )(
1529
-        context='Warning message',
1530
-        single='An empty {service_metavar!s} is not supported by vault(1).  '
1528
+        'Warning message',
1529
+        'An empty {service_metavar!s} is not supported by vault(1).  '
1531 1530
         'For compatibility, this will be treated as if SERVICE was not '
1532 1531
         'supplied, i.e., it will error out, or operate on global settings.',
1533 1532
         flags='python-brace-format',
1534 1533
     )
1535 1534
     EMPTY_SERVICE_SETTINGS_INACCESSIBLE = _Commented(
1536
-        comments='',
1535
+        '',
1537 1536
     )(
1538
-        context='Warning message',
1539
-        single='An empty {service_metavar!s} is not supported by vault(1).  '
1537
+        'Warning message',
1538
+        'An empty {service_metavar!s} is not supported by vault(1).  '
1540 1539
         'The empty-string service settings will be inaccessible '
1541 1540
         'and ineffective.  '
1542 1541
         'To ensure that vault(1) and {PROG_NAME!s} see the settings, '  # noqa: RUF027
... ...
@@ -1544,21 +1543,21 @@ class WarnMsgTemplate(enum.Enum):
1544 1543
         flags='python-brace-format',
1545 1544
     )
1546 1545
     FAILED_TO_MIGRATE_CONFIG = _Commented(
1547
-        comments='"error" is supplied by the operating system (errno/strerror).',
1546
+        '"error" is supplied by the operating system (errno/strerror).',
1548 1547
     )(
1549
-        context='Warning message',
1550
-        single='Failed to migrate to {path!r}: {error!s}: {filename!r}.',
1548
+        'Warning message',
1549
+        'Failed to migrate to {path!r}: {error!s}: {filename!r}.',
1551 1550
         flags='python-brace-format',
1552 1551
     )
1553 1552
     GLOBAL_PASSPHRASE_INEFFECTIVE = _Commented(
1554
-        comments='',
1553
+        '',
1555 1554
     )(
1556
-        context='Warning message',
1557
-        single='Setting a global passphrase is ineffective '
1555
+        'Warning message',
1556
+        'Setting a global passphrase is ineffective '
1558 1557
         'because a key is also set.',
1559 1558
     )
1560 1559
     PASSPHRASE_NOT_NORMALIZED = _Commented(
1561
-        comments='The key is a (vault) configuration key, in JSONPath syntax, '
1560
+        'The key is a (vault) configuration key, in JSONPath syntax, '
1562 1561
         'typically "$.global" for the global passphrase or '
1563 1562
         '"$.services.service_name" or "$.services["service with spaces"]" '
1564 1563
         'for the services "service_name" and "service with spaces", '
... ...
@@ -1569,8 +1568,8 @@ class WarnMsgTemplate(enum.Enum):
1569 1568
         'Please feel free to substitute any other appropriate way to '
1570 1569
         'mark up emphasis of the word "displays".',
1571 1570
     )(
1572
-        context='Warning message',
1573
-        single='The {key!s} passphrase is not {form!s}-normalized.  '
1571
+        'Warning message',
1572
+        'The {key!s} passphrase is not {form!s}-normalized.  '
1574 1573
         'Its serialization as a byte string may not be what you '
1575 1574
         'expect it to be, even if it *displays* correctly.  '
1576 1575
         'Please make sure to double-check any derived passphrases '
... ...
@@ -1578,10 +1577,10 @@ class WarnMsgTemplate(enum.Enum):
1578 1577
         flags='python-brace-format',
1579 1578
     )
1580 1579
     SERVICE_NAME_INCOMPLETABLE = _Commented(
1581
-        comments='',
1580
+        '',
1582 1581
     )(
1583
-        context='Warning message',
1584
-        single='The service name {service!r} contains an ASCII control character, '
1582
+        'Warning message',
1583
+        'The service name {service!r} contains an ASCII control character, '
1585 1584
         'which is not supported by our shell completion code.  '
1586 1585
         'This service name will therefore not be available for completion '
1587 1586
         'on the command-line.  '
... ...
@@ -1591,45 +1590,45 @@ class WarnMsgTemplate(enum.Enum):
1591 1590
         flags='python-brace-format',
1592 1591
     )
1593 1592
     SERVICE_PASSPHRASE_INEFFECTIVE = _Commented(
1594
-        comments='The key that is set need not necessarily be set at the '
1593
+        'The key that is set need not necessarily be set at the '
1595 1594
         'service level; it may be a global key as well.',
1596 1595
     )(
1597
-        context='Warning message',
1598
-        single='Setting a service passphrase is ineffective '
1596
+        'Warning message',
1597
+        'Setting a service passphrase is ineffective '
1599 1598
         'because a key is also set: {service!s}.',
1600 1599
         flags='python-brace-format',
1601 1600
     )
1602 1601
     STEP_REMOVE_INEFFECTIVE_VALUE = _Commented(
1603
-        comments='',
1602
+        '',
1604 1603
     )(
1605
-        context='Warning message',
1606
-        single='Removing ineffective setting {path!s} = {old!s}.',
1604
+        'Warning message',
1605
+        'Removing ineffective setting {path!s} = {old!s}.',
1607 1606
         flags='python-brace-format',
1608 1607
     )
1609 1608
     STEP_REPLACE_INVALID_VALUE = _Commented(
1610
-        comments='',
1609
+        '',
1611 1610
     )(
1612
-        context='Warning message',
1613
-        single='Replacing invalid value {old!s} for key {path!s} with {new!s}.',
1611
+        'Warning message',
1612
+        'Replacing invalid value {old!s} for key {path!s} with {new!s}.',
1614 1613
         flags='python-brace-format',
1615 1614
     )
1616 1615
     V01_STYLE_CONFIG = _Commented(
1617
-        comments='',
1616
+        '',
1618 1617
     )(
1619
-        context='Warning message :: Deprecation',
1620
-        single='Using deprecated v0.1-style config file {old!r}, '
1618
+        'Warning message :: Deprecation',
1619
+        'Using deprecated v0.1-style config file {old!r}, '
1621 1620
         'instead of v0.2-style {new!r}.  '
1622 1621
         'Support for v0.1-style config filenames will be removed in v1.0.',
1623 1622
         flags='python-brace-format',
1624 1623
     )
1625 1624
     V10_SUBCOMMAND_REQUIRED = _Commented(
1626
-        comments='This deprecation warning may be issued at any level, '
1625
+        'This deprecation warning may be issued at any level, '
1627 1626
         'i.e. we may actually be talking about subcommands, '
1628 1627
         'or sub-subcommands, or sub-sub-subcommands, etc., '
1629 1628
         'which is what the "here" is supposed to indicate.',
1630 1629
     )(
1631
-        context='Warning message :: Deprecation',
1632
-        single='A subcommand will be required here in v1.0.  '
1630
+        'Warning message :: Deprecation',
1631
+        'A subcommand will be required here in v1.0.  '
1633 1632
         'See --help for available subcommands.  '
1634 1633
         'Defaulting to subcommand "vault".',
1635 1634
     )
... ...
@@ -1637,65 +1636,64 @@ class WarnMsgTemplate(enum.Enum):
1637 1636
 
1638 1637
 class ErrMsgTemplate(enum.Enum):
1639 1638
     AGENT_REFUSED_LIST_KEYS = _Commented(
1640
-        comments='"loaded keys" being keys loaded into the agent.',
1639
+        '"loaded keys" being keys loaded into the agent.',
1641 1640
     )(
1642
-        context='Error message',
1643
-        single='The SSH agent failed to or refused to supply '
1644
-        'a list of loaded keys.',
1641
+        'Error message',
1642
+        'The SSH agent failed to or refused to supply a list of loaded keys.',
1645 1643
     )
1646 1644
     AGENT_REFUSED_SIGNATURE = _Commented(
1647
-        comments='The message to be signed is the vault UUID, '
1645
+        'The message to be signed is the vault UUID, '
1648 1646
         "but there's no space to explain that here, "
1649 1647
         'so ideally the error message does not go into detail.',
1650 1648
     )(
1651
-        context='Error message',
1652
-        single='The SSH agent failed to or refused to issue a signature '
1649
+        'Error message',
1650
+        'The SSH agent failed to or refused to issue a signature '
1653 1651
         'with the selected key, necessary for deriving a service passphrase.',
1654 1652
     )
1655 1653
     CANNOT_CONNECT_TO_AGENT = _Commented(
1656
-        comments='"error" is supplied by the operating system (errno/strerror).',
1654
+        '"error" is supplied by the operating system (errno/strerror).',
1657 1655
     )(
1658
-        context='Error message',
1659
-        single='Cannot connect to the SSH agent: {error!s}: {filename!r}.',
1656
+        'Error message',
1657
+        'Cannot connect to the SSH agent: {error!s}: {filename!r}.',
1660 1658
         flags='python-brace-format',
1661 1659
     )
1662 1660
     CANNOT_DECODEIMPORT_VAULT_SETTINGS = _Commented(
1663
-        comments='"error" is supplied by the operating system (errno/strerror).',
1661
+        '"error" is supplied by the operating system (errno/strerror).',
1664 1662
     )(
1665
-        context='Error message',
1666
-        single='Cannot import vault settings: cannot decode JSON: {error!s}.',
1663
+        'Error message',
1664
+        'Cannot import vault settings: cannot decode JSON: {error!s}.',
1667 1665
         flags='python-brace-format',
1668 1666
     )
1669 1667
     CANNOT_EXPORT_VAULT_SETTINGS = _Commented(
1670
-        comments='"error" is supplied by the operating system (errno/strerror).',
1668
+        '"error" is supplied by the operating system (errno/strerror).',
1671 1669
     )(
1672
-        context='Error message',
1673
-        single='Cannot export vault settings: {error!s}: {filename!r}.',
1670
+        'Error message',
1671
+        'Cannot export vault settings: {error!s}: {filename!r}.',
1674 1672
         flags='python-brace-format',
1675 1673
     )
1676 1674
     CANNOT_IMPORT_VAULT_SETTINGS = _Commented(
1677
-        comments='"error" is supplied by the operating system (errno/strerror).',
1675
+        '"error" is supplied by the operating system (errno/strerror).',
1678 1676
     )(
1679
-        context='Error message',
1680
-        single='Cannot import vault settings: {error!s}: {filename!r}.',
1677
+        'Error message',
1678
+        'Cannot import vault settings: {error!s}: {filename!r}.',
1681 1679
         flags='python-brace-format',
1682 1680
     )
1683 1681
     CANNOT_LOAD_USER_CONFIG = _Commented(
1684
-        comments='"error" is supplied by the operating system (errno/strerror).',
1682
+        '"error" is supplied by the operating system (errno/strerror).',
1685 1683
     )(
1686
-        context='Error message',
1687
-        single='Cannot load user config: {error!s}: {filename!r}.',
1684
+        'Error message',
1685
+        'Cannot load user config: {error!s}: {filename!r}.',
1688 1686
         flags='python-brace-format',
1689 1687
     )
1690 1688
     CANNOT_LOAD_VAULT_SETTINGS = _Commented(
1691
-        comments='"error" is supplied by the operating system (errno/strerror).',
1689
+        '"error" is supplied by the operating system (errno/strerror).',
1692 1690
     )(
1693
-        context='Error message',
1694
-        single='Cannot load vault settings: {error!s}: {filename!r}.',
1691
+        'Error message',
1692
+        'Cannot load vault settings: {error!s}: {filename!r}.',
1695 1693
         flags='python-brace-format',
1696 1694
     )
1697 1695
     CANNOT_PARSE_AS_VAULT_CONFIG = _Commented(
1698
-        comments='Unlike the "Cannot load {path!r} as a {fmt!s} '
1696
+        'Unlike the "Cannot load {path!r} as a {fmt!s} '
1699 1697
         'vault configuration." message, *this* error message is emitted '
1700 1698
         'when we have tried loading the path in each of our '
1701 1699
         'supported formats, and failed.  '
... ...
@@ -1703,28 +1701,28 @@ class ErrMsgTemplate(enum.Enum):
1703 1701
         'potentially multiple times, '
1704 1702
         'and this error message at the very bottom.',
1705 1703
     )(
1706
-        context='Error message',
1707
-        single='Cannot parse {path!r} as a valid vault-native '
1704
+        'Error message',
1705
+        'Cannot parse {path!r} as a valid vault-native '
1708 1706
         'configuration file/directory.',
1709 1707
         flags='python-brace-format',
1710 1708
     )
1711 1709
     CANNOT_PARSE_AS_VAULT_CONFIG_OSERROR = _Commented(
1712
-        comments='"error" is supplied by the operating system (errno/strerror).',
1710
+        '"error" is supplied by the operating system (errno/strerror).',
1713 1711
     )(
1714
-        context='Error message',
1715
-        single=r'Cannot parse {path!r} as a valid vault-native '
1712
+        'Error message',
1713
+        r'Cannot parse {path!r} as a valid vault-native '
1716 1714
         'configuration file/directory: {error!s}: {filename!r}.',
1717 1715
         flags='python-brace-format',
1718 1716
     )
1719 1717
     CANNOT_STORE_VAULT_SETTINGS = _Commented(
1720
-        comments='"error" is supplied by the operating system (errno/strerror).',
1718
+        '"error" is supplied by the operating system (errno/strerror).',
1721 1719
     )(
1722
-        context='Error message',
1723
-        single='Cannot store vault settings: {error!s}: {filename!r}.',
1720
+        'Error message',
1721
+        'Cannot store vault settings: {error!s}: {filename!r}.',
1724 1722
         flags='python-brace-format',
1725 1723
     )
1726 1724
     CANNOT_UNDERSTAND_AGENT = _Commented(
1727
-        comments='This error message is used whenever we cannot make '
1725
+        'This error message is used whenever we cannot make '
1728 1726
         'any sense of a response from the SSH agent '
1729 1727
         'because the response is ill-formed '
1730 1728
         '(truncated, improperly encoded, etc.) '
... ...
@@ -1733,12 +1731,12 @@ class ErrMsgTemplate(enum.Enum):
1733 1731
         'even if they indicate that the requested operation failed, '
1734 1732
         'are handled with a different error message.',
1735 1733
     )(
1736
-        context='Error message',
1737
-        single="Cannot understand the SSH agent's response because it "
1734
+        'Error message',
1735
+        "Cannot understand the SSH agent's response because it "
1738 1736
         'violates the communications protocol.',
1739 1737
     )
1740 1738
     CANNOT_UPDATE_SETTINGS_NO_SETTINGS = _Commented(
1741
-        comments='The settings_type metavar contains translations for '
1739
+        'The settings_type metavar contains translations for '
1742 1740
         'either "global settings" or "service-specific settings"; '
1743 1741
         'see the CANNOT_UPDATE_SETTINGS_METAVAR_SETTINGS_TYPE_GLOBAL and '
1744 1742
         'CANNOT_UPDATE_SETTINGS_METAVAR_SETTINGS_TYPE_SERVICE entries.  '
... ...
@@ -1750,139 +1748,138 @@ class ErrMsgTemplate(enum.Enum):
1750 1748
         'in any way you see fit that achieves the desired translations '
1751 1749
         'of the first sentence.',
1752 1750
     )(
1753
-        context='Error message',
1754
-        single='Cannot update the {settings_type!s} without any given settings.  '
1751
+        'Error message',
1752
+        'Cannot update the {settings_type!s} without any given settings.  '
1755 1753
         'You must specify at least one of --lower, ..., --symbol, '
1756 1754
         'or --phrase or --key.',
1757 1755
         flags='python-brace-format',
1758 1756
     )
1759 1757
     INVALID_USER_CONFIG = _Commented(
1760
-        comments='"error" is supplied by the operating system (errno/strerror).',
1758
+        '"error" is supplied by the operating system (errno/strerror).',
1761 1759
     )(
1762
-        context='Error message',
1763
-        single='The user configuration file is invalid.  '
1764
-        '{error!s}: {filename!r}.',
1760
+        'Error message',
1761
+        'The user configuration file is invalid.  {error!s}: {filename!r}.',
1765 1762
         flags='python-brace-format',
1766 1763
     )
1767 1764
     INVALID_VAULT_CONFIG = _Commented(
1768
-        comments='This error message is a reaction to a validator function '
1765
+        'This error message is a reaction to a validator function '
1769 1766
         'saying *that* the configuration is not valid, '
1770 1767
         'but not *how* it is not valid.  '
1771 1768
         'The configuration file is principally parsable, however.',
1772 1769
     )(
1773
-        context='Error message',
1774
-        single='Invalid vault config: {config!r}.',
1770
+        'Error message',
1771
+        'Invalid vault config: {config!r}.',
1775 1772
         flags='python-brace-format',
1776 1773
     )
1777 1774
     MISSING_MODULE = _Commented(
1778
-        comments='',
1775
+        '',
1779 1776
     )(
1780
-        context='Error message',
1781
-        single='Cannot load the required Python module {module!r}.',
1777
+        'Error message',
1778
+        'Cannot load the required Python module {module!r}.',
1782 1779
         flags='python-brace-format',
1783 1780
     )
1784 1781
     NO_AF_UNIX = _Commented(
1785
-        comments='',
1782
+        '',
1786 1783
     )(
1787
-        context='Error message',
1788
-        single='Cannot connect to an SSH agent because this Python version '
1784
+        'Error message',
1785
+        'Cannot connect to an SSH agent because this Python version '
1789 1786
         'does not support UNIX domain sockets.',
1790 1787
     )
1791 1788
     NO_KEY_OR_PHRASE = _Commented(
1792
-        comments='',
1789
+        '',
1793 1790
     )(
1794
-        context='Error message',
1795
-        single='No passphrase or key was given in the configuration.  '
1791
+        'Error message',
1792
+        'No passphrase or key was given in the configuration.  '
1796 1793
         'In this case, the --phrase or --key argument is required.',
1797 1794
     )
1798 1795
     NO_SSH_AGENT_FOUND = _Commented(
1799
-        comments='',
1796
+        '',
1800 1797
     )(
1801
-        context='Error message',
1802
-        single='Cannot find any running SSH agent because SSH_AUTH_SOCK is not set.',
1798
+        'Error message',
1799
+        'Cannot find any running SSH agent because SSH_AUTH_SOCK is not set.',
1803 1800
     )
1804 1801
     NO_SUITABLE_SSH_KEYS = _Commented(
1805
-        comments='',
1802
+        '',
1806 1803
     )(
1807
-        context='Error message',
1808
-        single='The SSH agent contains no keys suitable for {PROG_NAME!s}.',  # noqa: RUF027
1804
+        'Error message',
1805
+        'The SSH agent contains no keys suitable for {PROG_NAME!s}.',  # noqa: RUF027
1809 1806
         flags='python-brace-format',
1810 1807
     )
1811 1808
     PARAMS_MUTUALLY_EXCLUSIVE = _Commented(
1812
-        comments='The params are long-form command-line option names.  '
1809
+        'The params are long-form command-line option names.  '
1813 1810
         'Typical example: "--key is mutually exclusive with --phrase."',
1814 1811
     )(
1815
-        context='Error message',
1816
-        single='{param1!s} is mutually exclusive with {param2!s}.',
1812
+        'Error message',
1813
+        '{param1!s} is mutually exclusive with {param2!s}.',
1817 1814
         flags='python-brace-format',
1818 1815
     )
1819 1816
     PARAMS_NEEDS_SERVICE_OR_CONFIG = _Commented(
1820
-        comments='The param is a long-form command-line option name, '
1817
+        'The param is a long-form command-line option name, '
1821 1818
         'the metavar is Label.VAULT_METAVAR_SERVICE.',
1822 1819
     )(
1823
-        context='Error message',
1824
-        single='{param!s} requires a {service_metavar!s} or --config.',
1820
+        'Error message',
1821
+        '{param!s} requires a {service_metavar!s} or --config.',
1825 1822
         flags='python-brace-format',
1826 1823
     )
1827 1824
     PARAMS_NEEDS_SERVICE = _Commented(
1828
-        comments='The param is a long-form command-line option name, '
1825
+        'The param is a long-form command-line option name, '
1829 1826
         'the metavar is Label.VAULT_METAVAR_SERVICE.',
1830 1827
     )(
1831
-        context='Error message',
1832
-        single='{param!s} requires a {service_metavar!s}.',
1828
+        'Error message',
1829
+        '{param!s} requires a {service_metavar!s}.',
1833 1830
         flags='python-brace-format',
1834 1831
     )
1835 1832
     PARAMS_NO_SERVICE = _Commented(
1836
-        comments='The param is a long-form command-line option name, '
1833
+        'The param is a long-form command-line option name, '
1837 1834
         'the metavar is Label.VAULT_METAVAR_SERVICE.',
1838 1835
     )(
1839
-        context='Error message',
1840
-        single='{param!s} does not take a {service_metavar!s} argument.',
1836
+        'Error message',
1837
+        '{param!s} does not take a {service_metavar!s} argument.',
1841 1838
         flags='python-brace-format',
1842 1839
     )
1843 1840
     SERVICE_REQUIRED = _Commented(
1844
-        comments='The metavar is Label.VAULT_METAVAR_SERVICE.',
1841
+        'The metavar is Label.VAULT_METAVAR_SERVICE.',
1845 1842
     )(
1846
-        context='Error message',
1847
-        single='Deriving a passphrase requires a {service_metavar!s}.',
1843
+        'Error message',
1844
+        'Deriving a passphrase requires a {service_metavar!s}.',
1848 1845
         flags='python-brace-format',
1849 1846
     )
1850 1847
     SET_AND_UNSET_SAME_SETTING = _Commented(
1851
-        comments='The rephrasing '
1848
+        'The rephrasing '
1852 1849
         '"Attempted to unset and set the same setting '
1853 1850
         '(--unset={setting!s} --{setting!s}=...) at the same time."'
1854 1851
         'may or may not be more suitable as a basis for translation instead.',
1855 1852
     )(
1856
-        context='Error message',
1857
-        single='Attempted to unset and set --{setting!s} at the same time.',
1853
+        'Error message',
1854
+        'Attempted to unset and set --{setting!s} at the same time.',
1858 1855
         flags='python-brace-format',
1859 1856
     )
1860 1857
     SSH_KEY_NOT_LOADED = _Commented(
1861
-        comments='',
1858
+        '',
1862 1859
     )(
1863
-        context='Error message',
1864
-        single='The requested SSH key is not loaded into the agent.',
1860
+        'Error message',
1861
+        'The requested SSH key is not loaded into the agent.',
1865 1862
     )
1866 1863
     USER_ABORTED_EDIT = _Commented(
1867
-        comments='The user requested to edit the notes for a service, '
1864
+        'The user requested to edit the notes for a service, '
1868 1865
         'but aborted the request mid-editing.',
1869 1866
     )(
1870
-        context='Error message',
1871
-        single='Not saving any new notes: the user aborted the request.',
1867
+        'Error message',
1868
+        'Not saving any new notes: the user aborted the request.',
1872 1869
     )
1873 1870
     USER_ABORTED_PASSPHRASE = _Commented(
1874
-        comments='The user was prompted for a master passphrase, '
1871
+        'The user was prompted for a master passphrase, '
1875 1872
         'but aborted the request.',
1876 1873
     )(
1877
-        context='Error message',
1878
-        single='No passphrase was given; the user aborted the request.',
1874
+        'Error message',
1875
+        'No passphrase was given; the user aborted the request.',
1879 1876
     )
1880 1877
     USER_ABORTED_SSH_KEY_SELECTION = _Commented(
1881
-        comments='The user was prompted to select a master SSH key, '
1878
+        'The user was prompted to select a master SSH key, '
1882 1879
         'but aborted the request.',
1883 1880
     )(
1884
-        context='Error message',
1885
-        single='No SSH key was selected; the user aborted the request.',
1881
+        'Error message',
1882
+        'No SSH key was selected; the user aborted the request.',
1886 1883
     )
1887 1884
 
1888 1885
 
1889 1886