Coverage report: 100.000%

Files Functions Classes

coverage.py v7.13.1, created at 2026-07-06 21:34 +0200

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
src / derivepassphrase / __init__.py (no function)   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / __init__.py (no function)   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py shell_complete_path   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py is_completable_item   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py shell_complete_service   100.000% 12 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__init__   100.000% 22 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__init__.lock_fd   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__init__.unlock_fd   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__init__.lock_func   100.000% 6 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__init__.unlock_func   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__enter__   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py ConfigurationMutex.__exit__   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py configuration_mutex   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py get_tempdir   100.000% 15 0 0   100.000% 4 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py config_filename   100.000% 10 0 3   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py load_config   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py migrate_and_load_old_config   100.000% 11 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py save_config   100.000% 7 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py load_user_config   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py get_suitable_ssh_keys   100.000% 10 0 2   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py prompt_for_selection   100.000% 21 0 2   100.000% 8 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_nosuchprovidererror   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_nosuchprovidererror.handle_nosuchprovidererror   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_keyerror   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_keyerror.handle_keyerror   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_notimplementederror   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_notimplementederror.handle_notimplementederror   100.000% 5 0 0   100.000% 4 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_oserror   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_oserror.handle_oserror   100.000% 3 0 1   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_runtimeerror   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py handle_runtimeerror.handle_runtimeerror   100.000% 2 0 1   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py select_ssh_key   100.000% 18 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py select_ssh_key.handle_lookuperror   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py select_ssh_key.handle_sshagentfailederror   100.000% 2 0 1   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py prompt_for_passphrase   100.000% 2 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py toml_key   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py toml_key.escape   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py check_for_misleading_passphrase   100.000% 13 0 1   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py get_configured_connection_hint   100.000% 1 0 18   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py key_to_phrase   100.000% 15 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py print_config_as_sh_script   100.000% 24 0 0   100.000% 14 0   100.000%
src / derivepassphrase / _internals / cli_helpers.py (no function)   100.000% 76 0 12   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py ClickEchoStderrHandler.emit   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CLIofPackageFormatter.__init__   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CLIofPackageFormatter.format   100.000% 12 0 5   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardCLILogging.ensure_standard_logging   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardCLILogging.ensure_standard_warnings_logging   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardLoggingContextManager.__init__   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardLoggingContextManager.__enter__   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardLoggingContextManager.__exit__   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardWarningsLoggingContextManager.__init__   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardWarningsLoggingContextManager.__enter__   100.000% 7 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardWarningsLoggingContextManager.__enter__.showwarning   100.000% 1 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py StandardWarningsLoggingContextManager.__exit__   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py adjust_logging_level   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py OptionGroupOption.__init__   100.000% 6 0 1   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups._text   100.000% 3 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.collect_usage_pieces   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.get_help_option   100.000% 3 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.get_help_option.show_help   100.000% 3 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.get_short_help_str   100.000% 3 0 6   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.format_help_text   100.000% 6 0 2   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.format_options   100.000% 28 0 2   100.000% 12 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.format_commands   100.000% 17 0 2   100.000% 10 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py CommandWithHelpGroups.format_epilog   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py DefaultToVaultGroup.resolve_command   100.000% 12 0 3   100.000% 4 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py color_forcing_callback   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py validate_occurrence_constraint   100.000% 13 0 0   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py validate_length   100.000% 13 0 0   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py common_version_output   100.000% 11 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py print_version_info_types   100.000% 16 0 0   100.000% 8 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py derivepassphrase_version_option_callback   100.000% 8 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py export_version_option_callback   100.000% 8 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py export_vault_version_option_callback   100.000% 8 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py vault_version_option_callback   100.000% 15 0 2   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py version_option   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py standard_logging_options   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py ZshComplete.format_completion   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_machinery.py (no function)   100.000% 104 0 11   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py DebugTranslations._load_cache   100.000% 13 0 2   100.000% 8 0   100.000%
src / derivepassphrase / _internals / cli_messages.py DebugTranslations._locate_message   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py DebugTranslations._format_enum_name_maybe_with_fields   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py DebugTranslations.gettext   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py DebugTranslations.pgettext   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatableString.fields   100.000% 8 0 3   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatableString._maybe_rewrap   100.000% 5 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatableString.maybe_without_filename   100.000% 7 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatableString.rewrapped   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatableString.with_comments   100.000% 2 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatableString.validate_flags   100.000% 11 0 1   100.000% 6 0   100.000%
src / derivepassphrase / _internals / cli_messages.py translatable   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatedString.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatedString.__bool__   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatedString.__str__   100.000% 13 0 0   100.000% 4 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatedString._escape   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatedString.constant   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py TranslatedString.maybe_without_filename   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _internals / cli_messages.py commented   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _internals / cli_messages.py (no function)   100.000% 401 0 69   100.000% 0 0   100.000%
src / derivepassphrase / _types.py json_path   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py json_path.needs_longhand   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.__init__   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.traverse_path   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.walk_subconfigs   100.000% 7 0 0   100.000% 8 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.validate   100.000% 51 0 0   100.000% 40 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.clean_up_falsy_values   100.000% 30 0 3   100.000% 16 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.clean_up_falsy_values.falsy   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.clean_up_falsy_values.falsy_but_not_zero   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py _VaultConfigValidator.clean_up_falsy_values.falsy_but_not_string   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py validate_vault_config   100.000% 1 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _types.py is_vault_config   100.000% 5 0 2   100.000% 0 0   100.000%
src / derivepassphrase / _types.py js_truthiness   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / _types.py clean_up_falsy_vault_config_values   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py SSHKeyCommentPair.toreadonly   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py StoreroomKeyPair.toreadonly   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py StoreroomMasterKeys.toreadonly   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py _feature_test_function   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py PEP508Extra._test_export   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py PEP508Extra.test   100.000% 2 0 1   100.000% 0 0   100.000%
src / derivepassphrase / _types.py Feature.test   100.000% 2 0 1   100.000% 0 0   100.000%
src / derivepassphrase / _types.py DerivationScheme.test   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py ForeignConfigurationFormat._test_vault_storeroom   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py ForeignConfigurationFormat._test_vault_v02_v03   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py ForeignConfigurationFormat.test   100.000% 4 0 1   100.000% 2 0   100.000%
src / derivepassphrase / _types.py ExportSubcommand.test   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py Subcommand.test   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py BuiltinSSHAgentSocketProvider.is_known_fake_agent   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / _types.py (no function)   100.000% 198 0 72   100.000% 0 0   100.000%
src / derivepassphrase / cli.py derivepassphrase   100.000% 8 0 0   100.000% 2 0   100.000%
src / derivepassphrase / cli.py derivepassphrase_export   100.000% 6 0 2   100.000% 2 0   100.000%
src / derivepassphrase / cli.py derivepassphrase_export_vault   100.000% 25 0 0   100.000% 8 0   100.000%
src / derivepassphrase / cli.py _VaultContext.__init__   100.000% 16 0 2   100.000% 10 0   100.000%
src / derivepassphrase / cli.py _VaultContext.is_param_set   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.option_name   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.check_incompatible_options   100.000% 11 0 0   100.000% 6 0   100.000%
src / derivepassphrase / cli.py _VaultContext.err   100.000% 6 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.warning   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.deprecation_warning   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.deprecation_info   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.get_config   100.000% 18 0 0   100.000% 2 0   100.000%
src / derivepassphrase / cli.py _VaultContext.put_config   100.000% 6 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.get_user_config   100.000% 8 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.validate_command_line   100.000% 30 0 0   100.000% 30 0   100.000%
src / derivepassphrase / cli.py _VaultContext.get_mutex   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.dispatch_op   100.000% 13 0 0   100.000% 8 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_delete_service_settings   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_delete_globals   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_clear_all_settings   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_import_settings   100.000% 48 0 0   100.000% 22 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_export_settings   100.000% 16 0 0   100.000% 4 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_subop_query_phrase_or_key_change   100.000% 19 0 2   100.000% 8 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_store_config_only   100.000% 68 0 0   100.000% 34 0   100.000%
src / derivepassphrase / cli.py _VaultContext.run_op_derive_passphrase   100.000% 36 0 0   100.000% 14 0   100.000%
src / derivepassphrase / cli.py derivepassphrase_vault   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / cli.py (no function)   100.000% 100 0 6   100.000% 0 0   100.000%
src / derivepassphrase / exporter / __init__.py NotAVaultConfigError.__init__   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / __init__.py get_vault_key   100.000% 6 0 2   100.000% 2 0   100.000%
src / derivepassphrase / exporter / __init__.py get_vault_path   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / __init__.py register_export_vault_config_data_handler   100.000% 8 0 0   100.000% 4 0   100.000%
src / derivepassphrase / exporter / __init__.py register_export_vault_config_data_handler.wrapper   100.000% 6 0 0   100.000% 4 0   100.000%
src / derivepassphrase / exporter / __init__.py find_vault_config_data_handlers   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / __init__.py export_vault_config_data   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / __init__.py (no function)   100.000% 15 0 15   100.000% 0 0   100.000%
src / derivepassphrase / exporter / storeroom.py export_storeroom_data   100.000% 66 0 3   100.000% 26 0   100.000%
src / derivepassphrase / exporter / storeroom.py _h   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / storeroom.py _derive_master_keys_keys   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / storeroom.py _decrypt_master_keys_data   100.000% 22 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / storeroom.py _decrypt_session_keys   100.000% 24 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / storeroom.py _decrypt_contents   100.000% 18 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / storeroom.py _decrypt_bucket_item   100.000% 9 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / storeroom.py _decrypt_bucket_file   100.000% 15 0 0   100.000% 4 0   100.000%
src / derivepassphrase / exporter / storeroom.py _store   100.000% 6 0 0   100.000% 4 0   100.000%
src / derivepassphrase / exporter / storeroom.py (no function)   100.000% 39 0 21   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py export_vault_native_data   100.000% 13 0 3   100.000% 4 0   100.000%
src / derivepassphrase / exporter / vault_native.py _h   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser.__init__   100.000% 18 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser.__call__   100.000% 7 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser._pbkdf2   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser._parse_contents   100.000% 18 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser._parse_contents.cut   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser._derive_keys   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser._check_signature   100.000% 12 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeConfigParser._decrypt_payload   100.000% 15 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV03ConfigParser.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV03ConfigParser._generate_keys   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV03ConfigParser._hmac_input   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV03ConfigParser._make_decryptor   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV02ConfigParser.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV02ConfigParser._parse_contents   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV02ConfigParser._generate_keys   100.000% 5 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV02ConfigParser._hmac_input   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV02ConfigParser._evp_bytestokey_md5_one_iteration_no_salt   100.000% 17 0 0   100.000% 2 0   100.000%
src / derivepassphrase / exporter / vault_native.py VaultNativeV02ConfigParser._make_decryptor   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / exporter / vault_native.py (no function)   100.000% 61 0 30   100.000% 0 0   100.000%
src / derivepassphrase / sequin.py Sequin.__init__   100.000% 20 0 0   100.000% 8 0   100.000%
src / derivepassphrase / sequin.py Sequin.__init__.uint8_to_bits   100.000% 2 0 0   100.000% 2 0   100.000%
src / derivepassphrase / sequin.py Sequin._all_or_nothing_shift   100.000% 15 0 0   100.000% 4 0   100.000%
src / derivepassphrase / sequin.py Sequin._big_endian_number   100.000% 17 0 0   100.000% 8 0   100.000%
src / derivepassphrase / sequin.py Sequin.generate   100.000% 7 0 1   100.000% 4 0   100.000%
src / derivepassphrase / sequin.py Sequin._generate_inner   100.000% 27 0 1   100.000% 16 0   100.000%
src / derivepassphrase / sequin.py Sequin._stash   100.000% 4 0 0   100.000% 2 0   100.000%
src / derivepassphrase / sequin.py SequinExhaustedError.__init__   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / sequin.py (no function)   100.000% 16 0 2   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py _check_for_extra_empty_success_response_after_query_extension_request   100.000% 5 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py TrailingDataError.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentFailedError.__str__   100.000% 2 0 6   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.__init__   100.000% 31 0 4   100.000% 12 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.__enter__   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.__exit__   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.uint32   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.string   100.000% 9 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.unstring   100.000% 6 0 0   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.unstring_prefix   100.000% 9 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.ensure_agent_subcontext   100.000% 6 0 4   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient._agent_is_pageant   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.has_deterministic_dsa_signatures   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient._send_request_message   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient._get_response_pair   100.000% 10 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.request   100.000% 7 0 2   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.list_keys   100.000% 14 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.list_keys.shift   100.000% 10 0 0   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.sign   100.000% 11 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py SSHAgentClient.query_extensions   100.000% 21 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / __init__.py (no function)   100.000% 44 0 37   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.__init__   100.000% 8 0 6   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.__enter__   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.__exit__   100.000% 5 0 0   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.recv   100.000% 17 0 4   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.sendall   100.000% 13 0 4   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.named_pipe_name   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.for_openssh   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.for_pageant   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py WindowsNamedPipeHandle.pageant_named_pipe_name   100.000% 14 0 3   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.unix_domain_ssh_auth_sock   100.000% 11 0 0   100.000% 4 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider._windows_named_pipe   100.000% 13 0 0   100.000% 10 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.windows_named_pipe_for_pageant   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.windows_named_pipe_for_openssh   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.windows_named_pipe_ssh_auth_sock   100.000% 1 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.register   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.register.decorator   100.000% 11 0 0   100.000% 6 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.lookup   100.000% 7 0 0   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.resolve   100.000% 4 0 1   100.000% 2 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider.grouped   100.000% 20 0 0   100.000% 8 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py SocketProvider._find_all_ssh_agent_socket_providers   100.000% 24 0 3   100.000% 14 0   100.000%
src / derivepassphrase / ssh_agent / socketprovider.py (no function)   100.000% 116 0 103   100.000% 0 0   100.000%
src / derivepassphrase / vault.py Vault.__init__   100.000% 20 0 0   100.000% 6 0   100.000%
src / derivepassphrase / vault.py Vault.__init__.subtract_or_require   100.000% 6 0 0   100.000% 6 0   100.000%
src / derivepassphrase / vault.py Vault._entropy   100.000% 7 0 0   100.000% 4 0   100.000%
src / derivepassphrase / vault.py Vault._estimate_sufficient_hash_length   100.000% 10 0 0   100.000% 2 0   100.000%
src / derivepassphrase / vault.py Vault._get_binary_string   100.000% 3 0 0   100.000% 2 0   100.000%
src / derivepassphrase / vault.py Vault.create_hash   100.000% 4 0 0   100.000% 0 0   100.000%
src / derivepassphrase / vault.py Vault.generate   100.000% 28 0 1   100.000% 8 0   100.000%
src / derivepassphrase / vault.py Vault.is_suitable_ssh_key   100.000% 8 0 0   100.000% 2 0   100.000%
src / derivepassphrase / vault.py Vault.phrase_from_key   100.000% 8 0 0   100.000% 2 0   100.000%
src / derivepassphrase / vault.py Vault.phrases_are_interchangable   100.000% 2 0 0   100.000% 0 0   100.000%
src / derivepassphrase / vault.py Vault._phrase_to_hmac_key   100.000% 9 0 0   100.000% 2 0   100.000%
src / derivepassphrase / vault.py Vault._subtract   100.000% 16 0 0   100.000% 6 0   100.000%
src / derivepassphrase / vault.py (no function)   100.000% 33 0 3   100.000% 0 0   100.000%
tests / conftest.py pytest_configure   100.000% 5 0 0   100.000% 0 0   100.000%
tests / conftest.py use_stub_agent   100.000% 4 0 0   100.000% 0 0   100.000%
tests / conftest.py use_stub_agent_with_address   100.000% 4 0 0   100.000% 0 0   100.000%
tests / conftest.py terminate_on_exit   100.000% 4 0 0   100.000% 0 0   100.000%
tests / conftest.py _prepare_payload   100.000% 3 0 0   100.000% 0 0   100.000%
tests / conftest.py _load_key_optimistically   100.000% 6 0 13   100.000% 0 0   100.000%
tests / conftest.py ssh_agent_client_with_test_keys_loaded   100.000% 13 0 4   100.000% 2 0   100.000%
tests / conftest.py (no function)   100.000% 53 0 82   100.000% 8 0   100.000%
tests / data / __init__.py ListKeysAction.__call__   100.000% 6 0 1   100.000% 4 0   100.000%
tests / data / __init__.py SignAction.__call__   100.000% 4 0 1   100.000% 2 0   100.000%
tests / data / __init__.py SocketAddressAction.__call__   100.000% 8 0 8   100.000% 0 0   100.000%
tests / data / __init__.py SystemSupportAction.__call__   100.000% 14 0 1   100.000% 6 0   100.000%
tests / data / __init__.py SSHTestKey.is_suitable   100.000% 1 0 0   100.000% 0 0   100.000%
tests / data / __init__.py KnownSSHAgentInstance.agent_type   100.000% 14 0 1   100.000% 12 0   100.000%
tests / data / __init__.py VaultTestConfig.is_valid   100.000% 1 0 0   100.000% 0 0   100.000%
tests / data / __init__.py VaultTestConfig.is_smudgable   100.000% 2 0 0   100.000% 0 0   100.000%
tests / data / __init__.py (no function)   100.000% 211 0 7   100.000% 0 0   100.000%
tests / data / callables.py list_keys   100.000% 3 0 0   100.000% 0 0   100.000%
tests / data / callables.py sign   100.000% 5 0 1   100.000% 2 0   100.000%
tests / data / callables.py list_keys_singleton   100.000% 4 0 0   100.000% 0 0   100.000%
tests / data / callables.py suitable_ssh_keys   100.000% 3 0 0   100.000% 0 0   100.000%
tests / data / callables.py auto_prompt   100.000% 2 0 0   100.000% 0 0   100.000%
tests / data / callables.py phrase_from_key   100.000% 3 0 1   100.000% 0 0   100.000%
tests / data / callables.py parse_sh_export_line   100.000% 14 0 0   100.000% 6 0   100.000%
tests / data / callables.py make_file_readonly   100.000% 10 0 0   100.000% 4 0   100.000%
tests / data / callables.py (no function)   100.000% 19 0 5   100.000% 0 0   100.000%
tests / machinery / __init__.py get_concurrency_limit   100.000% 8 0 0   100.000% 2 0   100.000%
tests / machinery / __init__.py message_emitted_factory   100.000% 2 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py message_emitted_factory.message_emitted   100.000% 2 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py message_emitted_factory.message_emitted.check_record   100.000% 4 0 1   100.000% 2 0   100.000%
tests / machinery / __init__.py ReadableResult.clean_exit   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py ReadableResult.error_exit   100.000% 5 0 0   100.000% 2 0   100.000%
tests / machinery / __init__.py ReadableResult.error_exit.error_match   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py CliRunner.__init__   100.000% 6 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py CliRunner.invoke   100.000% 6 0 2   100.000% 0 0   100.000%
tests / machinery / __init__.py CliRunner.isolated_filesystem   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py AgentProtocolResponseQueue.__init__   100.000% 2 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py AgentProtocolResponseQueue.__bool__   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py AgentProtocolResponseQueue.__enter__   100.000% 2 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py AgentProtocolResponseQueue.__exit__   100.000% 2 0 2   100.000% 0 0   100.000%
tests / machinery / __init__.py AgentProtocolResponseQueue._send_request_message   100.000% 3 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py AgentProtocolResponseQueue._get_response_pair   100.000% 3 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.__init__   100.000% 12 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.__enter__   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.__exit__   100.000% 2 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.sendall   100.000% 26 0 0   100.000% 16 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.recv   100.000% 6 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket._failure   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket._check_for_io_on_closed_connection   100.000% 2 0 0   100.000% 2 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket._check_for_extension   100.000% 5 0 0   100.000% 2 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.query_extensions   100.000% 5 0 0   100.000% 2 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.request_identities   100.000% 13 0 0   100.000% 8 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocket.sign   100.000% 23 0 0   100.000% 14 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocketWithAddress.__init__   100.000% 15 0 0   100.000% 6 0   100.000%
tests / machinery / __init__.py StubbedSSHAgentSocketWithAddressAndDeterministicDSA.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
tests / machinery / __init__.py (no function)   100.000% 74 0 6   100.000% 0 0   100.000%
tests / machinery / hypothesis.py _hypothesis_settings_setup   100.000% 10 0 13   100.000% 0 0   100.000%
tests / machinery / hypothesis.py get_concurrency_step_count   100.000% 1 0 2   100.000% 0 0   100.000%
tests / machinery / hypothesis.py get_process_spawning_state_machine_examples_count   100.000% 8 0 2   100.000% 0 0   100.000%
tests / machinery / hypothesis.py vault_full_service_config   100.000% 12 0 0   100.000% 0 0   100.000%
tests / machinery / hypothesis.py smudged_vault_test_config   100.000% 25 0 0   100.000% 16 0   100.000%
tests / machinery / hypothesis.py _is_paramset   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / hypothesis.py _get_examples_data_and_ids   100.000% 14 0 6   100.000% 4 0   100.000%
tests / machinery / hypothesis.py explicit_examples   100.000% 3 0 4   100.000% 0 0   100.000%
tests / machinery / hypothesis.py explicit_examples.decorator   100.000% 13 0 0   100.000% 4 0   100.000%
tests / machinery / hypothesis.py (no function)   100.000% 26 0 7   100.000% 0 0   100.000%
tests / machinery / pytest.py faked_entry_point_list   100.000% 27 0 34   100.000% 8 0   100.000%
tests / machinery / pytest.py faked_entry_point_list.mangled_entry_points   100.000% 1 0 0   100.000% 0 0   100.000%
tests / machinery / pytest.py isolated_config   100.000% 18 0 0   100.000% 2 0   100.000%
tests / machinery / pytest.py isolated_vault_config   100.000% 5 0 0   100.000% 0 0   100.000%
tests / machinery / pytest.py isolated_vault_exporter_config   100.000% 41 0 4   100.000% 8 0   100.000%
tests / machinery / pytest.py (no function)   100.000% 47 0 10   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py as_openssh_keyfile_payload   100.000% 14 0 0   100.000% 2 0   100.000%
tests / test_000_testing_machinery.py minimize_openssh_keyfile_padding   100.000% 22 0 0   100.000% 6 0   100.000%
tests / test_000_testing_machinery.py Strategies.proper_bytestring_partition   100.000% 11 0 0   100.000% 2 0   100.000%
tests / test_000_testing_machinery.py Strategies.truncated_agent_request   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py Strategies.invalid_ssh_agent_messages   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py Strategies.unsupported_ssh_agent_messages   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py Strategies.stubbed_agent_addresses   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestTestKeys.test_public_keys_are_internally_consistent   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestTestKeys.test_private_keys_are_consistent_with_public_keys   100.000% 11 0 0   100.000% 2 0   100.000%
tests / test_000_testing_machinery.py TestTestKeys.test_private_keys_are_internally_consistent   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocket._get_agent   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketRequests.test_query_extensions   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketRequests.test_request_identities   100.000% 16 0 0   100.000% 2 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketRequests.test_sign   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketProperOperations.test_close_multiple   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketProperOperations.test_closed_agents_cannot_be_interacted_with   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketProperOperations.test_no_recv_without_sendall   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketProperOperations.test_piecemeal_sendall   100.000% 11 0 0   100.000% 2 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketProperOperations.test_invalid_ssh_agent_messages   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketProperOperations.test_truncated_ssh_agent_message   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketSupportedAndUnsupportedFeatures.test_unsupported_ssh_agent_messages   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_000_testing_machinery.py TestStubbedSSHAgentSocketSupportedAndUnsupportedFeatures.test_addresses   100.000% 9 0 0   100.000% 4 0   100.000%
tests / test_000_testing_machinery.py (no function)   100.000% 73 0 3   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestPassphraseUnicodeNormalization._test   100.000% 10 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestPassphraseUnicodeNormalization.test_warning   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestPassphraseUnicodeNormalization.test_error   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestUserConfigurationFileOther._test   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestUserConfigurationFileOther.test_bad_user_config_file   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestUserConfigurationFileOther.test_user_config_is_a_directory   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py TestSSHAgentAvailability.test_missing_agent_support   100.000% 11 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_000_basic.py (no function)   100.000% 31 0 2   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py _label_text   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py tokenize_version_output_item_listing   100.000% 14 0 3   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py parse_version_output   100.000% 49 0 3   100.000% 34 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py Test001VersionOutputParser.test_parse_version_output   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestHelpOutput.test_help_output   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestHelpOutput.test_eager_options   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestHelpOutput.test_automatic_color_mode   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestVersionOutput._test   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestVersionOutput.test_derivepassphrase_version_option_output   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestVersionOutput.test_export_version_option_output   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestVersionOutput.test_export_vault_version_option_output   100.000% 14 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py TestVersionOutput.test_vault_version_option_output   100.000% 11 0 3   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_all_cli.py (no function)   100.000% 64 0 2   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.assemble_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.build_reduced_vault_config_settings   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.services_strategy   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.service_name_and_data_strategy   100.000% 6 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.vault_full_config   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.maybe_unset_strategy   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.service_name_strategy   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.setting_strategy   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py Strategies.config_and_service_strategy   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.__init__   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.declare_initial_configs   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.extract_initial_settings   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.fold_configs   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.call_cli   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.set_globals_expected_result   100.000% 12 0 0   100.000% 6 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.set_globals   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.set_service_expected_result   100.000% 11 0 0   100.000% 6 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.set_service   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.purge_global_expected_result   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.purge_global   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.purge_service_expected_result   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.purge_service   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.purge_all_expected_result   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.purge_all   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.import_configuration_expected_result   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.import_configuration   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py ConfigManagementStateMachine.teardown   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py run_actions_handler   100.000% 6 0 2   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.ConfigurationMutexStub.__init__   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.ConfigurationMutexStub.__init__.lock   100.000% 4 0 6   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.ConfigurationMutexStub.__init__.unlock   100.000% 3 0 3   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.__init__   100.000% 5 0 5   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.overwrite_or_merge_commands   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.declare_initial_configs   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.extract_initial_settings   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.declare_initial_action   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.add_set_globals_action   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.add_set_service_action   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.add_purge_global_action   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.add_purge_service_action   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.add_purge_all_action   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.add_import_configuration_action   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.run_actions   100.000% 56 0 11   100.000% 10 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py FakeConfigurationMutexStateMachine.mainloop   100.000% 28 0 4   100.000% 8 0   100.000%
tests / test_derivepassphrase_cli / test_heavy_duty.py (no function)   100.000% 129 0 5   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py bash_format   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py fish_format   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py zsh_format   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py completion_item   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py assertable_item   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestShellCompletion.Completions.__init__   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestShellCompletion.Completions.__call__   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestShellCompletion.Completions.get_words   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCompletableItems.test_is_completable_item   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCompletableItemClasses.test_options   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCompletableItemClasses.test_subcommands   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCompletableItemClasses.test_paths   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCompletableItemClasses.test_service_names   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCompletionFormatting.test_shell_completion_formatting   100.000% 20 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCLICompletabilityHandling.test_cli_warns_and_completion_skips_incompletable_service_names   100.000% 15 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCLICompletabilityHandling.test_handling_nonexistant_service_names   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCLICompletabilityHandling.test_handling_unexpected_exceptions   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py TestCLICompletabilityHandling.test_handling_unexpected_exceptions.raiser   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_shell_completion.py (no function)   100.000% 63 0 5   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigrationMachinery.test_load_config_backup   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigrationMachinery.test_migration   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigrationMachinery.test_migration_error   100.000% 10 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigrationMachinery.test_bad_config_migration   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigrationMachinery.test_completion_supports_old_config_file   100.000% 10 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestArgumentForwarding.test_forward_export_vault_path_parameter   100.000% 11 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestArgumentForwarding.test_forward_export_vault_empty_commandline   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestArgumentForwarding.test_forward_vault_disable_character_set   100.000% 13 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestArgumentForwarding.test_forward_vault_empty_command_line   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigration.test_export_and_automatic_migration   100.000% 10 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigration.test_export_and_automatic_migration_with_errors   100.000% 12 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py TestConfigMigration.test_export_and_automatic_migration_with_errors.raiser   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_transition.py (no function)   100.000% 40 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py vault_config_exporter_shell_interpreter   100.000% 21 0 11   100.000% 6 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestConfigLoadingSaving.test_load   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestConfigLoadingSaving.test_save_bad_config   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestPrompting.test_selection_multiple   100.000% 13 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestPrompting.test_selection_multiple.driver   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestPrompting.test_selection_single   100.000% 13 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestPrompting.test_selection_single.driver   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestPrompting.test_passphrase   100.000% 11 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestLoggingMachinery.test_standard_logging_context_manager   100.000% 16 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestLoggingMachinery.test_warnings_context_manager   100.000% 22 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestExportConfigAsShellScript.export_as_sh_helper   100.000% 11 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestExportConfigAsShellScript.test_export_as_sh_global   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestExportConfigAsShellScript.test_export_as_sh_global_only_imports   100.000% 6 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestExportConfigAsShellScript.test_export_as_sh_service   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestExportConfigAsShellScript.test_export_as_sh_service_only_imports   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestTempdir.test_get_tempdir   100.000% 21 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestTempdir.test_get_tempdir.make_temporary_directory   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestTempdir.test_get_tempdir_force_default   100.000% 14 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestTempdir.test_get_tempdir_force_default.is_dir_false   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestTempdir.test_get_tempdir_force_default.is_dir_error   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_repeated_config_deletion   100.000% 10 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_phrase_from_key_manually   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_validate_constraints_manually   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_get_suitable_ssh_keys   100.000% 11 0 11   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_key_to_phrase   100.000% 26 0 0   100.000% 10 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_key_to_phrase.ErrCallback.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_key_to_phrase.err   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py TestMisc.test_key_to_phrase.warn   100.000% 2 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_utils.py (no function)   100.000% 85 0 4   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py is_warning_line   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py is_harmless_config_import_warning   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestHelp.test_help_output   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestDerivedPassphraseConstraints._test   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestDerivedPassphraseConstraints.test_disable_character_set   100.000% 6 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestDerivedPassphraseConstraints.test_disable_repetition   100.000% 5 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseBasic._test   100.000% 15 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseBasic.test_phrase_from_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseBasic.test_phrase_from_command_line   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyBasic._setup_environment   100.000% 10 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyBasic._check_result   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyBasic._test   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyBasic.test_key_from_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyBasic.test_key_from_command_line   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py provider_registry   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyExplicitSSHAgentSocketProvider.test_explicit_ssh_agent_socket_provider   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestKeyExplicitSSHAgentSocketProvider.test_explicit_ssh_agent_socket_provider_not_found   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseAndKeyOverriding._test   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseAndKeyOverriding.test_key_override_on_command_line   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseAndKeyOverriding.test_service_phrase_if_key_in_global_config   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestPhraseAndKeyOverriding.test_setting_phrase_thus_overriding_key_in_config   100.000% 12 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines._setup_environment   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines._call   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_invalid_argument_range   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_service_needed   100.000% 9 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_empty_service_name_causes_warning   100.000% 10 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_empty_service_name_causes_warning.is_expected_warning   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_empty_service_name_causes_warning.check_result   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_incompatible_options   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_no_arguments   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py TestInvalidCommandLines.test_no_passphrase_or_key   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_basic_functionality.py (no function)   100.000% 119 0 3   100.000% 6 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py is_harmless_config_import_warning   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py assert_vault_config_is_indented_and_line_broken   100.000% 2 0 1   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigValid._test   100.000% 13 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigValid.test_normal_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigValid.test_smudged_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigInvalid._setup_environment   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigInvalid._test   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigInvalid.test_not_a_vault_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigInvalid.test_not_json_data   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestImportConfigInvalid.test_not_a_file   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigValid._assert_result   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigValid._test   100.000% 16 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigValid.test_normal_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigValid.test_reexport_smudged_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigValid.test_no_stored_settings   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigInvalid._test   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigInvalid.test_bad_stored_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigInvalid.test_not_a_file   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigInvalid.test_target_not_a_file   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestExportConfigInvalid.test_settings_directory_not_a_directory   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationSuccesses._test   100.000% 15 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationSuccesses.test_store_good_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationSuccesses.test_config_directory_nonexistant   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures._test   100.000% 9 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_store_bad_config   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_no_ssh_key_selection   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_no_ssh_key_selection.prompt_for_selection   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_no_ssh_agent   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_bad_ssh_agent_connection   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_read_only_file   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_of_custom_error   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_of_custom_error.raiser   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_unsetting_and_setting_same_settings   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_ssh_agent_has_no_keys_loaded   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_fail_because_ssh_agent_has_no_keys_loaded.func   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_store_config_fail_manual_ssh_agent_runtime_error   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_store_config_fail_manual_ssh_agent_runtime_error.raiser   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_store_config_fail_manual_ssh_agent_refuses   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_store_config_fail_manual_ssh_agent_refuses.func   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_config_directory_not_a_file   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py TestStoringConfigurationFailures.test_config_directory_not_a_file.obstruct_config_saving   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_config_management.py (no function)   100.000% 85 0 4   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py is_warning_line   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py Strategies.notes   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesPrinting._test   100.000% 18 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesPrinting.test_service_with_notes_actually_prints_notes   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesPrinting.test_notes_placement   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._calculate_expected_contents   100.000% 5 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._test   100.000% 21 0 0   100.000% 6 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._assert_noop_exit   100.000% 3 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._assert_normal_exit   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._assert_notes_backup_warning   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._assert_notes_and_backup_notes   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditing._vault_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditingValid.test_successful_edit   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditingValid.test_noop_edit   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditingValid.test_marker_removed   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditingInvalid.test_abort   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py TestNotesEditingInvalid.test_fail_on_config_option_missing   100.000% 23 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli / test_vault_cli_notes_handling.py (no function)   100.000% 74 0 3   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIParameters._test   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIParameters.test_path   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIParameters.test_key   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIParameters.test_load_vault_specific_format   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures._test   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures.test_file_not_found   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures.test_invalid_encrypted_contents   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures.test_just_a_directory   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures.test_bad_signature   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures.test_invalid_decrypted_contents   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestCLIFailures.test_invalid_decrypted_contents.export_vault_config_data   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom._setup_environment   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_export_data_path_and_keys_type   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_decrypt_bucket_item_unknown_version   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_decrypt_bucket_file_bad_json_or_version   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_export_storeroom_data_bad_master_keys_file   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_export_storeroom_data_bad_directory_listing   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_decrypt_keys_wrong_data_length   100.000% 19 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestStoreroom.test_decrypt_keys_invalid_signature   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig._setup_environment   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_pbkdf2_manually   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_export_vault_native_data_explicit_version   100.000% 6 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_export_data_path_and_keys_type   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_result_caching   100.000% 12 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_result_caching.null_func   100.000% 1 0 1   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py TestVaultNativeConfig.test_no_password   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_cli_export_vault.py (no function)   100.000% 82 0 4   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py Strategies.names   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py Strategies.pairs_of_lists   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities.VaultKeyEnvironment.strategy   100.000% 9 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities._setup_environment   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities.test_get_vault_key   100.000% 8 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities.test_get_vault_key_without_envs   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities.test_get_vault_path   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities.test_get_vault_path_without_home   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestCLIUtilities.test_get_vault_path_without_home.raiser   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestExportVaultConfigDataHandlerRegistry._setup_environment   100.000% 6 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_exporter.py TestExportVaultConfigDataHandlerRegistry.test_register_export_vault_config_data_handler   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestExportVaultConfigDataHandlerRegistry.test_register_export_vault_config_data_handler_errors   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestExportVaultConfigDataHandlerRegistry.test_export_vault_config_data_bad_handler   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestGenericVaultCLIErrors._setup_environment   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestGenericVaultCLIErrors._call_cli   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py TestGenericVaultCLIErrors.test_invalid_format   100.000% 3 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_exporter.py TestGenericVaultCLIErrors.test_no_cryptography_error_message   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_exporter.py (no function)   100.000% 79 0 10   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py bits   100.000% 10 0 3   100.000% 4 0   100.000%
tests / test_derivepassphrase_sequin.py bitseq   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestStaticFunctionality.test_bits   100.000% 16 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestStaticFunctionality.BigEndianNumberTest.strategy   100.000% 7 0 4   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestStaticFunctionality.test_big_endian_number   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestStaticFunctionality.test_big_endian_number_exceptions   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.ConstructorTestCase.strategy   100.000% 21 0 0   100.000% 10 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_constructor   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.GenerationSequence.strategy   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_generating   100.000% 6 0 1   100.000% 4 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_generating_errors   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_internal_generating   100.000% 8 0 0   100.000% 6 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_internal_generating_errors   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.ShiftSequence.strategy   100.000% 13 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_shifting   100.000% 8 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_sequin.py TestSequin.test_constructor_exceptions   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py SequinStateMachine.__init__   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py SequinStateMachine._init   100.000% 5 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_sequin.py SequinStateMachine.normalize_bases_structure   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py SequinStateMachine.check_sequin_state   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_sequin.py SequinStateMachine.generate   100.000% 9 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_sequin.py (no function)   100.000% 101 0 22   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py Strategies.select_invalid_pipe_names   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py Strategies.bad_named_pipe_names   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py Strategies.io_operations_on_handles   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestStaticFunctionality.as_ssh_string   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestStaticFunctionality.canonicalize1   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestStaticFunctionality.canonicalize2   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestShellExportScriptParsing.test_sh_export_line_parsing   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_uint32   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_uint32_from_number   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_uint32_from_bytestring   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_string   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_string_from_bytestring   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_unstring   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_unstring_of_string_of_data   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_string_of_unstring_of_data   100.000% 7 0 0   100.000% 8 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_uint32_exceptions   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_string_exceptions   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHProtocolDatatypes.test_unstring_exceptions   100.000% 8 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_resolve   100.000% 10 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_resolve_chains   100.000% 16 0 3   100.000% 6 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_find_all_socket_providers   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_find_all_socket_providers_errors   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_overwriting_existing_entries   100.000% 18 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_overwriting_existing_entries.ancestry_chain   100.000% 6 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_resolve_non_existant_entries   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_register_new_entry   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderRegistry.test_register_old_entry   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentSigning.test_sign_data_via_agent   100.000% 15 0 9   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSuitableKeys.test_ssh_key_selector   100.000% 17 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSuitableKeys.test_ssh_key_selector.driver   100.000% 1 0 1   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestConstructorFailures.test_constructor_bad_running_agent   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestConstructorFailures.test_constructor_no_support   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestConstructorFailures.test_no_ssh_agent_socket_provider_available   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestOtherConstructorFeatures.test_explicit_socket   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses._setup_agent_and_request_handler   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses.test_truncated_server_response   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses.test_list_keys_error_responses   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses.test_sign_error_responses   100.000% 9 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses.test_request_error_responses   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses.test_query_extensions_malformed_responses   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses._query_response   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestAgentErrorResponses.test_tolerating_extra_success_after_extension_response   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderFailures.test_posix_provider_no_ssh_auth_sock   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestSSHAgentSocketProviderFailures.test_ssh_auth_sock_on_windows_provider_bad_named_pipe_name   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestWindowsNamedPipeHandle.test_constructor_bad_named_pipe_name   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestWindowsNamedPipeHandle.stub_createfile_and_closehandle   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestWindowsNamedPipeHandle.stub_createfile_and_closehandle.create_file   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestWindowsNamedPipeHandle.stub_createfile_and_closehandle.close_handle   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestWindowsNamedPipeHandle.test_closed_handle_cannot_be_operated_on   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py TestWindowsNamedPipeHandle.test_handle_is_non_reentrant   100.000% 7 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_000_basic.py (no function)   100.000% 149 0 3   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py draw_alias_chain   100.000% 17 0 5   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py draw_alias_chain.not_an_alias   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.__init__   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.get_registry_keys   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.new_key   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.check_consistency   100.000% 9 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.alias_existing   100.000% 6 0 2   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.alias_new   100.000% 5 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py SSHAgentSocketProviderRegistryStateMachine.teardown   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_ssh_agent / test_heavy_duty.py (no function)   100.000% 29 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py TestVaultConfig._test   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py TestVaultConfig.test_is_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py TestVaultConfig.test_is_config_even_if_smudged   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py TestVaultConfigValidation._test   100.000% 10 0 2   100.000% 2 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py TestVaultConfigValidation.test_validate_config   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py TestVaultConfigValidation.test_validate_config_even_if_smudged   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_000_basic.py (no function)   100.000% 28 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_heavy_duty.py js_atoms_strategy   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_heavy_duty.py js_nested_strategy   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_heavy_duty.py test_js_truthiness   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_types / test_heavy_duty.py (no function)   100.000% 15 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py phrases_are_interchangable   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py phrases_are_interchangable.canon   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py Strategies.text_strategy   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py Strategies.binary_phrase_strategy   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_vault.py Strategies.pair_of_binary_phrases_strategy   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py Strategies.make_interchangable_phrases   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestPhraseDependence._test   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestPhraseDependence.test_small   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestPhraseDependence.test_medium   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestPhraseDependence.test_large   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestPhraseDependence.test_mixed   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestServiceNameDependence.test_service_name_dependence   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestInterchangablePhrases._test   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestInterchangablePhrases.test_small   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestInterchangablePhrases.test_large   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestBasicFunctionalityFromUpstream.test_basic_configuration   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestBasicFunctionalityFromUpstream.test_phrase_dependence   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestStringAndBinaryExchangability.test_binary_service_name_and_phrase   100.000% 13 0 0   100.000% 8 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_nonstandard_length   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_repetition_limit   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_without_symbols   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_no_numbers   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_no_lowercase_letters   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_at_least_5_digits   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_lots_of_spaces   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_all_character_classes   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_only_numbers_and_very_high_repetition_limit   100.000% 4 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionFromUpstream.test_very_limited_character_set   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionThoroughness.test_password_with_length   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionThoroughness.test_arbitrary_repetition_limit   100.000% 11 0 0   100.000% 4 0   100.000%
tests / test_derivepassphrase_vault.py TestConstraintSatisfactionHeavyDuty.test_all_length_character_and_occurrence_constraints_satisfied   100.000% 22 0 3   100.000% 12 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_character_set_subtraction   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_entropy   100.000% 6 0 0   100.000% 2 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_wrong_initial_hash_length   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_binary_strings   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_too_many_symbols   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_no_viable_characters   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_character_set_subtraction_duplicate   100.000% 4 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py TestUtilities.test_invalid_hash_length_estimation_safety_factor   100.000% 5 0 0   100.000% 0 0   100.000%
tests / test_derivepassphrase_vault.py (no function)   100.000% 119 0 3   100.000% 0 0   100.000%
tests / test_l10n.py use_debug_translations   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_l10n.py monkeypatched_null_translations   100.000% 3 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.errnos   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.error_messages_with_fields   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.printable_strings   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.strings_without_fields   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.translatable_string_enums   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.translatable_strings   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py Strategies.two_different   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestDebugTranslations._test_interpolated   100.000% 6 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestDebugTranslations.test_get_str   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestDebugTranslations.test_get_ts_str   100.000% 2 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestDebugTranslations.test_get_ts   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestDebugTranslations.test_get_enum   100.000% 1 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestTranslatedStrings.test_hashable   100.000% 12 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestTranslatedStrings.test_hashable_interpolated   100.000% 8 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestTranslatedStrings.test_hashable_interpolated_error_and_filename   100.000% 7 0 0   100.000% 0 0   100.000%
tests / test_l10n.py TestSuppressedInterpolations.test_missing_fields   100.000% 12 0 0   100.000% 2 0   100.000%
tests / test_l10n.py TestSuppressedInterpolations.test_constant_strings   100.000% 4 0 3   100.000% 0 0   100.000%
tests / test_l10n.py TestSuppressedInterpolations.test_nonformat_strings   100.000% 5 0 3   100.000% 0 0   100.000%
tests / test_l10n.py (no function)   100.000% 76 0 3   100.000% 2 0   100.000%
Total     100.000% 7843 0 2282   100.000% 1108 0   100.000%

No items found using the specified filter.

90 empty functions skipped.