Marco Ricci commited on 2025-02-15 11:59:04
Zeige 4 geänderte Dateien mit 231 Einfügungen und 77 Löschungen.
This provides an obvious centralized location to change the phrasing of the string constants, or add new related items. Additionally, rename the `KNOWN_*` constants to `UNAVAILABLE_*` to make their intent clearer.
| ... | ... |
@@ -28,7 +28,7 @@ import click |
| 28 | 28 |
import click.shell_completion |
| 29 | 29 |
from typing_extensions import Any, ParamSpec, override |
| 30 | 30 |
|
| 31 |
-from derivepassphrase import _internals |
|
| 31 |
+from derivepassphrase import _internals, _types |
|
| 32 | 32 |
from derivepassphrase._internals import cli_messages as _msg |
| 33 | 33 |
|
| 34 | 34 |
if TYPE_CHECKING: |
| ... | ... |
@@ -1032,14 +1032,14 @@ def derivepassphrase_version_option_callback( |
| 1032 | 1032 |
) -> None: |
| 1033 | 1033 |
if value and not ctx.resilient_parsing: |
| 1034 | 1034 |
common_version_output(ctx, param, value) |
| 1035 |
- derivation_schemes = {'vault': True}
|
|
| 1036 |
- supported_subcommands = {'export', 'vault'}
|
|
| 1035 |
+ derivation_schemes = dict.fromkeys(_types.DerivationScheme, True) |
|
| 1036 |
+ supported_subcommands = set(_types.Subcommand) |
|
| 1037 | 1037 |
click.echo() |
| 1038 |
- version_info_types = {
|
|
| 1038 |
+ version_info_types: dict[_msg.Label, list[str]] = {
|
|
| 1039 | 1039 |
_msg.Label.SUPPORTED_DERIVATION_SCHEMES: [ |
| 1040 | 1040 |
k for k, v in derivation_schemes.items() if v |
| 1041 | 1041 |
], |
| 1042 |
- _msg.Label.KNOWN_DERIVATION_SCHEMES: [ |
|
| 1042 |
+ _msg.Label.UNAVAILABLE_DERIVATION_SCHEMES: [ |
|
| 1043 | 1043 |
k for k, v in derivation_schemes.items() if not v |
| 1044 | 1044 |
], |
| 1045 | 1045 |
_msg.Label.SUPPORTED_SUBCOMMANDS: sorted(supported_subcommands), |
| ... | ... |
@@ -1055,15 +1055,15 @@ def export_version_option_callback( |
| 1055 | 1055 |
) -> None: |
| 1056 | 1056 |
if value and not ctx.resilient_parsing: |
| 1057 | 1057 |
common_version_output(ctx, param, value) |
| 1058 |
- supported_subcommands = {'vault'}
|
|
| 1058 |
+ supported_subcommands = set(_types.ExportSubcommand) |
|
| 1059 | 1059 |
foreign_configuration_formats = {
|
| 1060 |
- 'vault storeroom': False, |
|
| 1061 |
- 'vault v0.2': False, |
|
| 1062 |
- 'vault v0.3': False, |
|
| 1060 |
+ _types.ForeignConfigurationFormat.VAULT_STOREROOM: False, |
|
| 1061 |
+ _types.ForeignConfigurationFormat.VAULT_V02: False, |
|
| 1062 |
+ _types.ForeignConfigurationFormat.VAULT_V03: False, |
|
| 1063 | 1063 |
} |
| 1064 | 1064 |
click.echo() |
| 1065 |
- version_info_types = {
|
|
| 1066 |
- _msg.Label.KNOWN_FOREIGN_CONFIGURATION_FORMATS: [ |
|
| 1065 |
+ version_info_types: dict[_msg.Label, list[str]] = {
|
|
| 1066 |
+ _msg.Label.UNAVAILABLE_FOREIGN_CONFIGURATION_FORMATS: [ |
|
| 1067 | 1067 |
k for k, v in foreign_configuration_formats.items() if not v |
| 1068 | 1068 |
], |
| 1069 | 1069 |
_msg.Label.SUPPORTED_SUBCOMMANDS: sorted(supported_subcommands), |
| ... | ... |
@@ -1080,36 +1080,36 @@ def export_vault_version_option_callback( |
| 1080 | 1080 |
if value and not ctx.resilient_parsing: |
| 1081 | 1081 |
common_version_output(ctx, param, value) |
| 1082 | 1082 |
foreign_configuration_formats = {
|
| 1083 |
- 'vault storeroom': False, |
|
| 1084 |
- 'vault v0.2': False, |
|
| 1085 |
- 'vault v0.3': False, |
|
| 1083 |
+ _types.ForeignConfigurationFormat.VAULT_STOREROOM: False, |
|
| 1084 |
+ _types.ForeignConfigurationFormat.VAULT_V02: False, |
|
| 1085 |
+ _types.ForeignConfigurationFormat.VAULT_V03: False, |
|
| 1086 | 1086 |
} |
| 1087 | 1087 |
known_extras = {
|
| 1088 |
- 'export': False, |
|
| 1088 |
+ _types.PEP508Extra.EXPORT: False, |
|
| 1089 | 1089 |
} |
| 1090 | 1090 |
try: |
| 1091 | 1091 |
from derivepassphrase.exporter import storeroom, vault_native # noqa: I001,PLC0415 |
| 1092 | 1092 |
|
| 1093 | 1093 |
foreign_configuration_formats[ |
| 1094 |
- 'vault storeroom' |
|
| 1094 |
+ _types.ForeignConfigurationFormat.VAULT_STOREROOM |
|
| 1095 | 1095 |
] = not storeroom.STUBBED |
| 1096 | 1096 |
foreign_configuration_formats[ |
| 1097 |
- 'vault v0.2' |
|
| 1097 |
+ _types.ForeignConfigurationFormat.VAULT_V02 |
|
| 1098 | 1098 |
] = not vault_native.STUBBED |
| 1099 | 1099 |
foreign_configuration_formats[ |
| 1100 |
- 'vault v0.3' |
|
| 1100 |
+ _types.ForeignConfigurationFormat.VAULT_V03 |
|
| 1101 | 1101 |
] = not vault_native.STUBBED |
| 1102 |
- known_extras['export'] = ( |
|
| 1102 |
+ known_extras[_types.PEP508Extra.EXPORT] = ( |
|
| 1103 | 1103 |
not storeroom.STUBBED and not vault_native.STUBBED |
| 1104 | 1104 |
) |
| 1105 | 1105 |
except ModuleNotFoundError: # pragma: no cover |
| 1106 | 1106 |
pass |
| 1107 | 1107 |
click.echo() |
| 1108 |
- version_info_types = {
|
|
| 1108 |
+ version_info_types: dict[_msg.Label, list[str]] = {
|
|
| 1109 | 1109 |
_msg.Label.SUPPORTED_FOREIGN_CONFIGURATION_FORMATS: [ |
| 1110 | 1110 |
k for k, v in foreign_configuration_formats.items() if v |
| 1111 | 1111 |
], |
| 1112 |
- _msg.Label.KNOWN_FOREIGN_CONFIGURATION_FORMATS: [ |
|
| 1112 |
+ _msg.Label.UNAVAILABLE_FOREIGN_CONFIGURATION_FORMATS: [ |
|
| 1113 | 1113 |
k for k, v in foreign_configuration_formats.items() if not v |
| 1114 | 1114 |
], |
| 1115 | 1115 |
_msg.Label.ENABLED_PEP508_EXTRAS: [ |
| ... | ... |
@@ -1128,14 +1128,14 @@ def vault_version_option_callback( |
| 1128 | 1128 |
if value and not ctx.resilient_parsing: |
| 1129 | 1129 |
common_version_output(ctx, param, value) |
| 1130 | 1130 |
features = {
|
| 1131 |
- 'master SSH key': hasattr(socket, 'AF_UNIX'), |
|
| 1131 |
+ _types.Feature.SSH_KEY: hasattr(socket, 'AF_UNIX'), |
|
| 1132 | 1132 |
} |
| 1133 | 1133 |
click.echo() |
| 1134 |
- version_info_types = {
|
|
| 1134 |
+ version_info_types: dict[_msg.Label, list[str]] = {
|
|
| 1135 | 1135 |
_msg.Label.SUPPORTED_FEATURES: [ |
| 1136 | 1136 |
k for k, v in features.items() if v |
| 1137 | 1137 |
], |
| 1138 |
- _msg.Label.KNOWN_FEATURES: [ |
|
| 1138 |
+ _msg.Label.UNAVAILABLE_FEATURES: [ |
|
| 1139 | 1139 |
k for k, v in features.items() if not v |
| 1140 | 1140 |
], |
| 1141 | 1141 |
} |
| ... | ... |
@@ -1284,75 +1284,82 @@ class Label(enum.Enum): |
| 1284 | 1284 |
"""""" |
| 1285 | 1285 |
ENABLED_PEP508_EXTRAS = commented( |
| 1286 | 1286 |
'This is part of the version output, emitting lists of enabled ' |
| 1287 |
- 'PEP 508 extras. A comma-separated English list of items follows, ' |
|
| 1287 |
+ 'PEP 508 extras. ' |
|
| 1288 |
+ 'A comma-separated English list of items follows, ' |
|
| 1288 | 1289 |
'with standard English punctuation.', |
| 1289 | 1290 |
)( |
| 1290 | 1291 |
'Label :: Info Message:: Table row header', |
| 1291 | 1292 |
'PEP 508 extras:', |
| 1292 | 1293 |
) |
| 1293 | 1294 |
"""""" |
| 1294 |
- KNOWN_DERIVATION_SCHEMES = commented( |
|
| 1295 |
- 'This is part of the version output, emitting lists of known ' |
|
| 1296 |
- 'derivation schemes. A comma-separated English list of items ' |
|
| 1297 |
- 'follows, with standard English punctuation.', |
|
| 1295 |
+ SUPPORTED_DERIVATION_SCHEMES = commented( |
|
| 1296 |
+ 'This is part of the version output, emitting lists of supported ' |
|
| 1297 |
+ 'derivation schemes. ' |
|
| 1298 |
+ 'A comma-separated English list of items follows, ' |
|
| 1299 |
+ 'with standard English punctuation.', |
|
| 1298 | 1300 |
)( |
| 1299 | 1301 |
'Label :: Info Message:: Table row header', |
| 1300 |
- 'Known derivation schemes:', |
|
| 1302 |
+ 'Supported derivation schemes:', |
|
| 1301 | 1303 |
) |
| 1302 | 1304 |
"""""" |
| 1303 |
- KNOWN_FEATURES = commented( |
|
| 1304 |
- 'This is part of the version output, emitting lists of known, ' |
|
| 1305 |
- 'unavailable features for this subcommand. ' |
|
| 1305 |
+ SUPPORTED_FEATURES = commented( |
|
| 1306 |
+ 'This is part of the version output, emitting lists of supported ' |
|
| 1307 |
+ 'features for this subcommand. ' |
|
| 1306 | 1308 |
'A comma-separated English list of items follows, ' |
| 1307 | 1309 |
'with standard English punctuation.', |
| 1308 | 1310 |
)( |
| 1309 | 1311 |
'Label :: Info Message:: Table row header', |
| 1310 |
- 'Known features:', |
|
| 1312 |
+ 'Supported features:', |
|
| 1311 | 1313 |
) |
| 1312 | 1314 |
"""""" |
| 1313 |
- KNOWN_FOREIGN_CONFIGURATION_FORMATS = commented( |
|
| 1314 |
- 'This is part of the version output, emitting lists of known ' |
|
| 1315 |
- 'foreign configuration formats. A comma-separated English list ' |
|
| 1316 |
- 'of items follows, with standard English punctuation.', |
|
| 1315 |
+ SUPPORTED_FOREIGN_CONFIGURATION_FORMATS = commented( |
|
| 1316 |
+ 'This is part of the version output, emitting lists of supported ' |
|
| 1317 |
+ 'foreign configuration formats. ' |
|
| 1318 |
+ 'A comma-separated English list of items follows, ' |
|
| 1319 |
+ 'with standard English punctuation.', |
|
| 1317 | 1320 |
)( |
| 1318 | 1321 |
'Label :: Info Message:: Table row header', |
| 1319 |
- 'Known foreign configuration formats:', |
|
| 1322 |
+ 'Supported foreign configuration formats:', |
|
| 1320 | 1323 |
) |
| 1321 | 1324 |
"""""" |
| 1322 |
- SUPPORTED_DERIVATION_SCHEMES = commented( |
|
| 1325 |
+ SUPPORTED_SUBCOMMANDS = commented( |
|
| 1323 | 1326 |
'This is part of the version output, emitting lists of supported ' |
| 1324 |
- 'derivation schemes. A comma-separated English list of items ' |
|
| 1325 |
- 'follows, with standard English punctuation.', |
|
| 1327 |
+ 'subcommands. ' |
|
| 1328 |
+ 'A comma-separated English list of items follows, ' |
|
| 1329 |
+ 'with standard English punctuation.', |
|
| 1326 | 1330 |
)( |
| 1327 | 1331 |
'Label :: Info Message:: Table row header', |
| 1328 |
- 'Supported derivation schemes:', |
|
| 1332 |
+ 'Supported subcommands:', |
|
| 1329 | 1333 |
) |
| 1330 | 1334 |
"""""" |
| 1331 |
- SUPPORTED_FEATURES = commented( |
|
| 1332 |
- 'This is part of the version output, emitting lists of supported ' |
|
| 1333 |
- 'features for this subcommand. A comma-separated ' |
|
| 1334 |
- 'English list of items follows, with standard English punctuation.', |
|
| 1335 |
+ UNAVAILABLE_DERIVATION_SCHEMES = commented( |
|
| 1336 |
+ 'This is part of the version output, emitting lists of known, ' |
|
| 1337 |
+ 'unavailable derivation schemes. ' |
|
| 1338 |
+ 'A comma-separated English list of items follows, ' |
|
| 1339 |
+ 'with standard English punctuation.', |
|
| 1335 | 1340 |
)( |
| 1336 | 1341 |
'Label :: Info Message:: Table row header', |
| 1337 |
- 'Supported features:', |
|
| 1342 |
+ 'Known derivation schemes:', |
|
| 1338 | 1343 |
) |
| 1339 | 1344 |
"""""" |
| 1340 |
- SUPPORTED_FOREIGN_CONFIGURATION_FORMATS = commented( |
|
| 1341 |
- 'This is part of the version output, emitting lists of supported ' |
|
| 1342 |
- 'foreign configuration formats. A comma-separated English list ' |
|
| 1343 |
- 'of items follows, with standard English punctuation.', |
|
| 1345 |
+ UNAVAILABLE_FEATURES = commented( |
|
| 1346 |
+ 'This is part of the version output, emitting lists of known, ' |
|
| 1347 |
+ 'unavailable features for this subcommand. ' |
|
| 1348 |
+ 'A comma-separated English list of items follows, ' |
|
| 1349 |
+ 'with standard English punctuation.', |
|
| 1344 | 1350 |
)( |
| 1345 | 1351 |
'Label :: Info Message:: Table row header', |
| 1346 |
- 'Supported foreign configuration formats:', |
|
| 1352 |
+ 'Known features:', |
|
| 1347 | 1353 |
) |
| 1348 | 1354 |
"""""" |
| 1349 |
- SUPPORTED_SUBCOMMANDS = commented( |
|
| 1350 |
- 'This is part of the version output, emitting lists of supported ' |
|
| 1351 |
- 'subcommands. A comma-separated English list ' |
|
| 1352 |
- 'of items follows, with standard English punctuation.', |
|
| 1355 |
+ UNAVAILABLE_FOREIGN_CONFIGURATION_FORMATS = commented( |
|
| 1356 |
+ 'This is part of the version output, emitting lists of known, ' |
|
| 1357 |
+ 'unavailable foreign configuration formats. ' |
|
| 1358 |
+ 'A comma-separated English list of items follows, ' |
|
| 1359 |
+ 'with standard English punctuation.', |
|
| 1353 | 1360 |
)( |
| 1354 | 1361 |
'Label :: Info Message:: Table row header', |
| 1355 |
- 'Supported subcommands:', |
|
| 1362 |
+ 'Known foreign configuration formats:', |
|
| 1356 | 1363 |
) |
| 1357 | 1364 |
"""""" |
| 1358 | 1365 |
CONFIRM_THIS_CHOICE_PROMPT_TEXT = commented( |
| ... | ... |
@@ -755,3 +755,120 @@ class StoreroomMasterKeys(NamedTuple, Generic[T_Buffer]): |
| 755 | 755 |
encryption_key=bytes(self.encryption_key), |
| 756 | 756 |
signing_key=bytes(self.signing_key), |
| 757 | 757 |
) |
| 758 |
+ |
|
| 759 |
+ |
|
| 760 |
+class PEP508Extra(str, enum.Enum): |
|
| 761 |
+ """PEP 508 extras supported by `derivepassphrase`. |
|
| 762 |
+ |
|
| 763 |
+ Attributes: |
|
| 764 |
+ EXPORT: |
|
| 765 |
+ The necessary dependencies to allow the `export` subcommand |
|
| 766 |
+ to handle as many foreign configuration formats as possible. |
|
| 767 |
+ |
|
| 768 |
+ """ |
|
| 769 |
+ |
|
| 770 |
+ EXPORT = 'export' |
|
| 771 |
+ """""" |
|
| 772 |
+ |
|
| 773 |
+ __str__ = str.__str__ |
|
| 774 |
+ __format__ = str.__format__ # type: ignore[assignment] |
|
| 775 |
+ |
|
| 776 |
+ |
|
| 777 |
+class Feature(str, enum.Enum): |
|
| 778 |
+ """Optional features supported by `derivepassphrase`. |
|
| 779 |
+ |
|
| 780 |
+ Attributes: |
|
| 781 |
+ SSH_KEY: |
|
| 782 |
+ The `vault` subcommand supports using a master SSH key, |
|
| 783 |
+ instead of a master passphrase, if an SSH agent is running |
|
| 784 |
+ and the master SSH key is loaded into it. |
|
| 785 |
+ |
|
| 786 |
+ This feature requires Python support for the SSH agent's |
|
| 787 |
+ chosen communication channel technology. |
|
| 788 |
+ |
|
| 789 |
+ """ |
|
| 790 |
+ |
|
| 791 |
+ SSH_KEY = 'master SSH key' |
|
| 792 |
+ """""" |
|
| 793 |
+ |
|
| 794 |
+ __str__ = str.__str__ |
|
| 795 |
+ __format__ = str.__format__ # type: ignore[assignment] |
|
| 796 |
+ |
|
| 797 |
+ |
|
| 798 |
+class DerivationScheme(str, enum.Enum): |
|
| 799 |
+ """Derivation schemes provided by `derivepassphrase`. |
|
| 800 |
+ |
|
| 801 |
+ Attributes: |
|
| 802 |
+ VAULT: |
|
| 803 |
+ The derivation scheme used by James Coglan's `vault`. |
|
| 804 |
+ |
|
| 805 |
+ """ |
|
| 806 |
+ |
|
| 807 |
+ VAULT = 'vault' |
|
| 808 |
+ """""" |
|
| 809 |
+ |
|
| 810 |
+ __str__ = str.__str__ |
|
| 811 |
+ __format__ = str.__format__ # type: ignore[assignment] |
|
| 812 |
+ |
|
| 813 |
+ |
|
| 814 |
+class ForeignConfigurationFormat(str, enum.Enum): |
|
| 815 |
+ """Configuration formats supported by `derivepassphrase export`. |
|
| 816 |
+ |
|
| 817 |
+ Attributes: |
|
| 818 |
+ VAULT_STOREROOM: |
|
| 819 |
+ The vault "storeroom" format for the `export vault` |
|
| 820 |
+ subcommand. |
|
| 821 |
+ VAULT_V02: |
|
| 822 |
+ The vault-native "v0.2" format for the `export vault` |
|
| 823 |
+ subcommand. |
|
| 824 |
+ VAULT_V03: |
|
| 825 |
+ The vault-native "v0.3" format for the `export vault` |
|
| 826 |
+ subcommand. |
|
| 827 |
+ |
|
| 828 |
+ """ |
|
| 829 |
+ |
|
| 830 |
+ VAULT_STOREROOM = 'vault storeroom' |
|
| 831 |
+ """""" |
|
| 832 |
+ VAULT_V02 = 'vault v0.2' |
|
| 833 |
+ """""" |
|
| 834 |
+ VAULT_V03 = 'vault v0.3' |
|
| 835 |
+ """""" |
|
| 836 |
+ |
|
| 837 |
+ __str__ = str.__str__ |
|
| 838 |
+ __format__ = str.__format__ # type: ignore[assignment] |
|
| 839 |
+ |
|
| 840 |
+ |
|
| 841 |
+class ExportSubcommand(str, enum.Enum): |
|
| 842 |
+ """Subcommands provided by `derivepassphrase export`. |
|
| 843 |
+ |
|
| 844 |
+ Attributes: |
|
| 845 |
+ VAULT: |
|
| 846 |
+ The `export vault` subcommand. |
|
| 847 |
+ |
|
| 848 |
+ """ |
|
| 849 |
+ |
|
| 850 |
+ VAULT = 'vault' |
|
| 851 |
+ """""" |
|
| 852 |
+ |
|
| 853 |
+ __str__ = str.__str__ |
|
| 854 |
+ __format__ = str.__format__ # type: ignore[assignment] |
|
| 855 |
+ |
|
| 856 |
+ |
|
| 857 |
+class Subcommand(str, enum.Enum): |
|
| 858 |
+ """Subcommands provided by `derivepassphrase`. |
|
| 859 |
+ |
|
| 860 |
+ Attributes: |
|
| 861 |
+ EXPORT: |
|
| 862 |
+ The `export` subcommand. |
|
| 863 |
+ VAULT: |
|
| 864 |
+ The `vault` subcommand. |
|
| 865 |
+ |
|
| 866 |
+ """ |
|
| 867 |
+ |
|
| 868 |
+ EXPORT = 'export' |
|
| 869 |
+ """""" |
|
| 870 |
+ VAULT = 'vault' |
|
| 871 |
+ """""" |
|
| 872 |
+ |
|
| 873 |
+ __str__ = str.__str__ |
|
| 874 |
+ __format__ = str.__format__ # type: ignore[assignment] |
| ... | ... |
@@ -7,6 +7,7 @@ from __future__ import annotations |
| 7 | 7 |
import base64 |
| 8 | 8 |
import contextlib |
| 9 | 9 |
import copy |
| 10 |
+import enum |
|
| 10 | 11 |
import errno |
| 11 | 12 |
import io |
| 12 | 13 |
import json |
| ... | ... |
@@ -89,6 +90,35 @@ class VersionOutputData(NamedTuple): |
| 89 | 90 |
features: dict[str, bool] |
| 90 | 91 |
|
| 91 | 92 |
|
| 93 |
+class KnownLineType(str, enum.Enum): |
|
| 94 |
+ SUPPORTED_FOREIGN_CONFS = cli_messages.Label.SUPPORTED_FOREIGN_CONFIGURATION_FORMATS.value.singular.rstrip( |
|
| 95 |
+ ':' |
|
| 96 |
+ ) |
|
| 97 |
+ UNAVAILABLE_FOREIGN_CONFS = cli_messages.Label.UNAVAILABLE_FOREIGN_CONFIGURATION_FORMATS.value.singular.rstrip( |
|
| 98 |
+ ':' |
|
| 99 |
+ ) |
|
| 100 |
+ SUPPORTED_SCHEMES = ( |
|
| 101 |
+ cli_messages.Label.SUPPORTED_DERIVATION_SCHEMES.value.singular.rstrip( |
|
| 102 |
+ ':' |
|
| 103 |
+ ) |
|
| 104 |
+ ) |
|
| 105 |
+ UNAVAILABLE_SCHEMES = cli_messages.Label.UNAVAILABLE_DERIVATION_SCHEMES.value.singular.rstrip( |
|
| 106 |
+ ':' |
|
| 107 |
+ ) |
|
| 108 |
+ SUPPORTED_SUBCOMMANDS = ( |
|
| 109 |
+ cli_messages.Label.SUPPORTED_SUBCOMMANDS.value.singular.rstrip(':')
|
|
| 110 |
+ ) |
|
| 111 |
+ SUPPORTED_FEATURES = ( |
|
| 112 |
+ cli_messages.Label.SUPPORTED_FEATURES.value.singular.rstrip(':')
|
|
| 113 |
+ ) |
|
| 114 |
+ UNAVAILABLE_FEATURES = ( |
|
| 115 |
+ cli_messages.Label.UNAVAILABLE_FEATURES.value.singular.rstrip(':')
|
|
| 116 |
+ ) |
|
| 117 |
+ ENABLED_EXTRAS = ( |
|
| 118 |
+ cli_messages.Label.ENABLED_PEP508_EXTRAS.value.singular.rstrip(':')
|
|
| 119 |
+ ) |
|
| 120 |
+ |
|
| 121 |
+ |
|
| 92 | 122 |
PASSPHRASE_GENERATION_OPTIONS: list[tuple[str, ...]] = [ |
| 93 | 123 |
('--phrase',),
|
| 94 | 124 |
('--key',),
|
| ... | ... |
@@ -423,21 +453,21 @@ def parse_version_output( # noqa: C901 |
| 423 | 453 |
item = item_.strip() |
| 424 | 454 |
if not item: |
| 425 | 455 |
continue |
| 426 |
- if line_type == 'Supported foreign configuration formats': |
|
| 456 |
+ if line_type == KnownLineType.SUPPORTED_FOREIGN_CONFS: |
|
| 427 | 457 |
formats[item] = True |
| 428 |
- elif line_type == 'Known foreign configuration formats': |
|
| 458 |
+ elif line_type == KnownLineType.UNAVAILABLE_FOREIGN_CONFS: |
|
| 429 | 459 |
formats[item] = False |
| 430 |
- elif line_type == 'Supported derivation schemes': |
|
| 460 |
+ elif line_type == KnownLineType.SUPPORTED_SCHEMES: |
|
| 431 | 461 |
schemes[item] = True |
| 432 |
- elif line_type == 'Known derivation schemes': |
|
| 462 |
+ elif line_type == KnownLineType.UNAVAILABLE_SCHEMES: |
|
| 433 | 463 |
schemes[item] = False |
| 434 |
- elif line_type == 'Supported subcommands': |
|
| 464 |
+ elif line_type == KnownLineType.SUPPORTED_SUBCOMMANDS: |
|
| 435 | 465 |
subcommands.add(item) |
| 436 |
- elif line_type == 'PEP 508 extras': |
|
| 466 |
+ elif line_type == KnownLineType.ENABLED_EXTRAS: |
|
| 437 | 467 |
extras.add(item) |
| 438 |
- elif line_type == 'Supported features': |
|
| 468 |
+ elif line_type == KnownLineType.SUPPORTED_FEATURES: |
|
| 439 | 469 |
features[item] = True |
| 440 |
- elif line_type == 'Known features': |
|
| 470 |
+ elif line_type == KnownLineType.UNAVAILABLE_FEATURES: |
|
| 441 | 471 |
features[item] = False |
| 442 | 472 |
else: |
| 443 | 473 |
raise AssertionError( # noqa: TRY003 |
| ... | ... |
@@ -1848,8 +1878,8 @@ class TestAllCLI: |
| 1848 | 1878 |
assert result.clean_exit(empty_stderr=True), 'expected clean exit' |
| 1849 | 1879 |
assert result.output.strip(), 'expected version output' |
| 1850 | 1880 |
version_data = parse_version_output(result.output) |
| 1851 |
- actually_known_schemes = {'vault': True}
|
|
| 1852 |
- subcommands = {'export', 'vault'}
|
|
| 1881 |
+ actually_known_schemes = dict.fromkeys(_types.DerivationScheme, True) |
|
| 1882 |
+ subcommands = set(_types.Subcommand) |
|
| 1853 | 1883 |
assert version_data.derivation_schemes == actually_known_schemes |
| 1854 | 1884 |
assert not version_data.foreign_configuration_formats |
| 1855 | 1885 |
assert version_data.subcommands == subcommands |
| ... | ... |
@@ -1891,11 +1921,11 @@ class TestAllCLI: |
| 1891 | 1921 |
assert result.output.strip(), 'expected version output' |
| 1892 | 1922 |
version_data = parse_version_output(result.output) |
| 1893 | 1923 |
actually_known_formats: dict[str, bool] = {
|
| 1894 |
- 'vault storeroom': False, |
|
| 1895 |
- 'vault v0.2': False, |
|
| 1896 |
- 'vault v0.3': False, |
|
| 1924 |
+ _types.ForeignConfigurationFormat.VAULT_STOREROOM: False, |
|
| 1925 |
+ _types.ForeignConfigurationFormat.VAULT_V02: False, |
|
| 1926 |
+ _types.ForeignConfigurationFormat.VAULT_V03: False, |
|
| 1897 | 1927 |
} |
| 1898 |
- subcommands = {'vault'}
|
|
| 1928 |
+ subcommands = set(_types.ExportSubcommand) |
|
| 1899 | 1929 |
assert not version_data.derivation_schemes |
| 1900 | 1930 |
assert ( |
| 1901 | 1931 |
version_data.foreign_configuration_formats |
| ... | ... |
@@ -1945,12 +1975,12 @@ class TestAllCLI: |
| 1945 | 1975 |
from derivepassphrase.exporter import storeroom, vault_native # noqa: I001,PLC0415 |
| 1946 | 1976 |
|
| 1947 | 1977 |
actually_known_formats.update({
|
| 1948 |
- 'vault storeroom': not storeroom.STUBBED, |
|
| 1949 |
- 'vault v0.2': not vault_native.STUBBED, |
|
| 1950 |
- 'vault v0.3': not vault_native.STUBBED, |
|
| 1978 |
+ _types.ForeignConfigurationFormat.VAULT_STOREROOM: not storeroom.STUBBED, |
|
| 1979 |
+ _types.ForeignConfigurationFormat.VAULT_V02: not vault_native.STUBBED, |
|
| 1980 |
+ _types.ForeignConfigurationFormat.VAULT_V03: not vault_native.STUBBED, |
|
| 1951 | 1981 |
}) |
| 1952 | 1982 |
if not storeroom.STUBBED and not vault_native.STUBBED: |
| 1953 |
- actually_enabled_extras.add('export')
|
|
| 1983 |
+ actually_enabled_extras.add(_types.PEP508Extra.EXPORT) |
|
| 1954 | 1984 |
assert not version_data.derivation_schemes |
| 1955 | 1985 |
assert ( |
| 1956 | 1986 |
version_data.foreign_configuration_formats |
| ... | ... |
@@ -1994,7 +2024,7 @@ class TestAllCLI: |
| 1994 | 2024 |
assert result.output.strip(), 'expected version output' |
| 1995 | 2025 |
version_data = parse_version_output(result.output) |
| 1996 | 2026 |
features: dict[str, bool] = {
|
| 1997 |
- 'master SSH key': hasattr(socket, 'AF_UNIX'), |
|
| 2027 |
+ _types.Feature.SSH_KEY: hasattr(socket, 'AF_UNIX'), |
|
| 1998 | 2028 |
} |
| 1999 | 2029 |
assert not version_data.derivation_schemes |
| 2000 | 2030 |
assert not version_data.foreign_configuration_formats |
| 2001 | 2031 |