Coverage report: 91%

Files Functions Classes

coverage.py v7.12.0, created at 2025-12-19 21:22 +0000

File function   statements missing excluded   coverage
src / kdbxtool / __init__.py (no function)   10 0 0   100%
src / kdbxtool / database.py _StreamCipher.encrypt   0 0 1   100%
src / kdbxtool / database.py _StreamCipher.decrypt   0 0 1   100%
src / kdbxtool / database.py ProtectedStreamCipher.__init__   3 0 0   100%
src / kdbxtool / database.py ProtectedStreamCipher._create_cipher   10 0 0   100%
src / kdbxtool / database.py ProtectedStreamCipher.decrypt   1 0 0   100%
src / kdbxtool / database.py ProtectedStreamCipher.encrypt   1 0 0   100%
src / kdbxtool / database.py Database.__init__   12 0 0   100%
src / kdbxtool / database.py Database._set_database_references   5 0 0   100%
src / kdbxtool / database.py Database.__enter__   1 0 0   100%
src / kdbxtool / database.py Database.__exit__   1 0 0   100%
src / kdbxtool / database.py Database.zeroize_credentials   17 9 0   47%
src / kdbxtool / database.py Database.dump   14 1 0   93%
src / kdbxtool / database.py Database.merge   5 0 0   100%
src / kdbxtool / database.py Database.transformed_key   1 0 0   100%
src / kdbxtool / database.py Database.kdf_salt   3 1 0   67%
src / kdbxtool / database.py Database.root_group   1 0 0   100%
src / kdbxtool / database.py Database.settings   1 0 0   100%
src / kdbxtool / database.py Database.filepath   1 0 0   100%
src / kdbxtool / database.py Database.open   11 1 0   91%
src / kdbxtool / database.py Database.open_interactive   10 1 0   90%
src / kdbxtool / database.py Database.open_bytes   27 4 0   85%
src / kdbxtool / database.py Database.create   26 4 0   85%
src / kdbxtool / database.py Database._upgrade_to_kdbx4   12 1 0   92%
src / kdbxtool / database.py Database.save   19 2 0   89%
src / kdbxtool / database.py Database.reload   13 0 0   100%
src / kdbxtool / database.py Database.xml   8 0 0   100%
src / kdbxtool / database.py Database.dump_xml   2 0 0   100%
src / kdbxtool / database.py Database._indent_xml   12 0 0   100%
src / kdbxtool / database.py Database.to_bytes   39 6 0   85%
src / kdbxtool / database.py Database.set_credentials   4 0 0   100%
src / kdbxtool / database.py Database.find_entries   14 1 0   93%
src / kdbxtool / database.py Database._find_entry_by_path   20 0 0   100%
src / kdbxtool / database.py Database.find_groups   14 2 0   86%
src / kdbxtool / database.py Database._find_group_by_path   15 0 0   100%
src / kdbxtool / database.py Database.find_entries_contains   1 0 0   100%
src / kdbxtool / database.py Database.find_entries_regex   1 0 0   100%
src / kdbxtool / database.py Database.find_attachments   22 2 0   91%
src / kdbxtool / database.py Database.attachments   2 0 0   100%
src / kdbxtool / database.py Database.iter_entries   1 0 0   100%
src / kdbxtool / database.py Database.iter_groups   1 0 0   100%
src / kdbxtool / database.py Database.deref   26 2 0   92%
src / kdbxtool / database.py Database.move_entry   10 1 0   90%
src / kdbxtool / database.py Database.move_group   12 1 0   92%
src / kdbxtool / database.py Database.recyclebin_group   10 0 0   100%
src / kdbxtool / database.py Database.trash_entry   12 1 0   92%
src / kdbxtool / database.py Database.trash_group   16 1 0   94%
src / kdbxtool / database.py Database.empty_group   8 0 0   100%
src / kdbxtool / database.py Database.apply_protection_policy   3 3 0   0%
src / kdbxtool / database.py Database.apply_protection_policy_all   2 2 0   0%
src / kdbxtool / database.py Database.get_binary   1 0 0   100%
src / kdbxtool / database.py Database.add_binary   5 0 0   100%
src / kdbxtool / database.py Database.remove_binary   6 6 0   0%
src / kdbxtool / database.py Database.get_attachment   4 0 0   100%
src / kdbxtool / database.py Database.add_attachment   2 0 0   100%
src / kdbxtool / database.py Database.remove_attachment   5 0 0   100%
src / kdbxtool / database.py Database.list_attachments   1 0 0   100%
src / kdbxtool / database.py Database.custom_icons   1 0 0   100%
src / kdbxtool / database.py Database.get_custom_icon   2 0 0   100%
src / kdbxtool / database.py Database.add_custom_icon   4 0 0   100%
src / kdbxtool / database.py Database.remove_custom_icon   4 0 0   100%
src / kdbxtool / database.py Database.find_custom_icon_by_name   6 0 0   100%
src / kdbxtool / database.py Database._parse_xml   17 2 0   88%
src / kdbxtool / database.py Database._decrypt_protected_values   9 2 0   78%
src / kdbxtool / database.py Database._parse_meta   45 3 0   93%
src / kdbxtool / database.py Database._parse_meta.get_text   2 0 0   100%
src / kdbxtool / database.py Database._parse_group   25 0 0   100%
src / kdbxtool / database.py Database._parse_entry   49 0 0   100%
src / kdbxtool / database.py Database._parse_times   21 1 0   95%
src / kdbxtool / database.py Database._parse_times.parse_time   4 1 0   75%
src / kdbxtool / database.py Database._decode_time   18 2 0   89%
src / kdbxtool / database.py Database._encode_time   3 1 0   67%
src / kdbxtool / database.py Database._build_xml   8 0 0   100%
src / kdbxtool / database.py Database._encrypt_protected_values   6 0 0   100%
src / kdbxtool / database.py Database._build_meta   29 1 0   97%
src / kdbxtool / database.py Database._build_group   21 3 0   86%
src / kdbxtool / database.py Database._build_entry   42 3 0   93%
src / kdbxtool / database.py Database._build_times   11 0 0   100%
src / kdbxtool / database.py Database.__str__   4 0 0   100%
src / kdbxtool / database.py (no function)   151 0 6   100%
src / kdbxtool / exceptions.py UnsupportedVersionError.__init__   3 0 0   100%
src / kdbxtool / exceptions.py DecryptionError.__init__   1 0 0   100%
src / kdbxtool / exceptions.py AuthenticationError.__init__   1 0 0   100%
src / kdbxtool / exceptions.py UnknownCipherError.__init__   2 0 0   100%
src / kdbxtool / exceptions.py TwofishNotAvailableError.__init__   1 1 0   0%
src / kdbxtool / exceptions.py InvalidPasswordError.__init__   1 1 0   0%
src / kdbxtool / exceptions.py InvalidKeyFileError.__init__   1 0 0   100%
src / kdbxtool / exceptions.py MissingCredentialsError.__init__   1 0 0   100%
src / kdbxtool / exceptions.py YubiKeyNotFoundError.__init__   1 0 0   100%
src / kdbxtool / exceptions.py YubiKeySlotError.__init__   2 0 0   100%
src / kdbxtool / exceptions.py YubiKeyTimeoutError.__init__   2 0 0   100%
src / kdbxtool / exceptions.py YubiKeyNotAvailableError.__init__   1 0 0   100%
src / kdbxtool / exceptions.py EntryNotFoundError.__init__   1 1 0   0%
src / kdbxtool / exceptions.py GroupNotFoundError.__init__   1 1 0   0%
src / kdbxtool / exceptions.py InvalidXmlError.__init__   1 1 0   0%
src / kdbxtool / exceptions.py Kdbx3UpgradeRequired.__init__   1 0 0   100%
src / kdbxtool / exceptions.py MergeError.__init__   1 1 0   0%
src / kdbxtool / exceptions.py (no function)   44 0 0   100%
src / kdbxtool / merge.py MergeResult.has_changes   1 0 0   100%
src / kdbxtool / merge.py MergeResult.total_changes   1 0 0   100%
src / kdbxtool / merge.py MergeResult.summary   24 9 0   62%
src / kdbxtool / merge.py Merger.__init__   5 0 0   100%
src / kdbxtool / merge.py Merger.merge   8 0 0   100%
src / kdbxtool / merge.py Merger._merge_custom_icons   9 5 0   44%
src / kdbxtool / merge.py Merger._merge_binaries   12 0 0   100%
src / kdbxtool / merge.py Merger._remap_binary_refs   3 3 0   0%
src / kdbxtool / merge.py Merger._merge_groups_recursive   16 0 0   100%
src / kdbxtool / merge.py Merger._find_group_in_children   4 0 0   100%
src / kdbxtool / merge.py Merger._clone_group   10 0 0   100%
src / kdbxtool / merge.py Merger._update_group_metadata   9 0 0   100%
src / kdbxtool / merge.py Merger._merge_entries   7 0 0   100%
src / kdbxtool / merge.py Merger._add_new_entry   10 2 0   80%
src / kdbxtool / merge.py Merger._merge_entry   12 0 0   100%
src / kdbxtool / merge.py Merger._clone_entry   2 0 0   100%
src / kdbxtool / merge.py Merger._copy_entry_fields   11 0 0   100%
src / kdbxtool / merge.py Merger._merge_entry_history   14 3 0   79%
src / kdbxtool / merge.py Merger._merge_locations   38 14 0   63%
src / kdbxtool / merge.py Merger._apply_deletions   14 2 0   86%
src / kdbxtool / merge.py Merger._is_recycle_bin   2 0 0   100%
src / kdbxtool / merge.py Merger._is_in_recycle_bin   9 1 0   89%
src / kdbxtool / merge.py Merger._is_source_newer   1 0 0   100%
src / kdbxtool / merge.py Merger._ensure_group_path   13 9 0   31%
src / kdbxtool / merge.py (no function)   58 0 2   100%
src / kdbxtool / models / __init__.py (no function)   5 0 0   100%
src / kdbxtool / models / attachment.py Attachment.data   3 1 0   67%
src / kdbxtool / models / attachment.py Attachment.__str__   1 1 0   0%
src / kdbxtool / models / attachment.py Attachment.__repr__   1 1 0   0%
src / kdbxtool / models / attachment.py (no function)   12 0 2   100%
src / kdbxtool / models / entry.py Entry.__post_init__   4 0 0   100%
src / kdbxtool / models / entry.py Entry.title   1 0 0   100%
src / kdbxtool / models / entry.py Entry.title   3 1 0   67%
src / kdbxtool / models / entry.py Entry.username   1 0 0   100%
src / kdbxtool / models / entry.py Entry.username   3 1 0   67%
src / kdbxtool / models / entry.py Entry.password   1 0 0   100%
src / kdbxtool / models / entry.py Entry.password   3 1 0   67%
src / kdbxtool / models / entry.py Entry.url   1 0 0   100%
src / kdbxtool / models / entry.py Entry.url   3 1 0   67%
src / kdbxtool / models / entry.py Entry.notes   1 0 0   100%
src / kdbxtool / models / entry.py Entry.notes   3 1 0   67%
src / kdbxtool / models / entry.py Entry.otp   1 0 0   100%
src / kdbxtool / models / entry.py Entry.otp   3 0 0   100%
src / kdbxtool / models / entry.py Entry.totp   17 1 0   94%
src / kdbxtool / models / entry.py Entry.custom_icon   1 0 0   100%
src / kdbxtool / models / entry.py Entry.custom_icon   12 2 0   83%
src / kdbxtool / models / entry.py Entry.get_custom_property   4 0 0   100%
src / kdbxtool / models / entry.py Entry.set_custom_property   3 0 0   100%
src / kdbxtool / models / entry.py Entry.delete_custom_property   5 0 0   100%
src / kdbxtool / models / entry.py Entry.custom_properties   1 0 0   100%
src / kdbxtool / models / entry.py Entry.parent   1 0 0   100%
src / kdbxtool / models / entry.py Entry.database   1 0 0   100%
src / kdbxtool / models / entry.py Entry.index   3 0 0   100%
src / kdbxtool / models / entry.py Entry.expired   1 1 0   0%
src / kdbxtool / models / entry.py Entry.touch   1 1 0   0%
src / kdbxtool / models / entry.py Entry.reindex   12 0 0   100%
src / kdbxtool / models / entry.py Entry.save_history   2 0 0   100%
src / kdbxtool / models / entry.py Entry.delete_history   8 0 0   100%
src / kdbxtool / models / entry.py Entry.clear_history   1 0 0   100%
src / kdbxtool / models / entry.py Entry.move_to   12 0 0   100%
src / kdbxtool / models / entry.py Entry.ref   8 0 0   100%
src / kdbxtool / models / entry.py Entry.deref   4 0 0   100%
src / kdbxtool / models / entry.py Entry.dump   18 4 0   78%
src / kdbxtool / models / entry.py Entry.__str__   1 0 0   100%
src / kdbxtool / models / entry.py Entry.__hash__   1 0 0   100%
src / kdbxtool / models / entry.py Entry.__eq__   3 1 0   67%
src / kdbxtool / models / entry.py Entry.create   7 0 0   100%
src / kdbxtool / models / entry.py HistoryEntry.__str__   1 1 0   0%
src / kdbxtool / models / entry.py HistoryEntry.__hash__   1 0 0   100%
src / kdbxtool / models / entry.py HistoryEntry.from_entry   2 0 0   100%
src / kdbxtool / models / entry.py (no function)   102 0 4   100%
src / kdbxtool / models / group.py Group.parent   1 0 0   100%
src / kdbxtool / models / group.py Group.database   1 0 0   100%
src / kdbxtool / models / group.py Group.is_root_group   1 0 0   100%
src / kdbxtool / models / group.py Group.index   3 0 0   100%
src / kdbxtool / models / group.py Group.path   9 0 0   100%
src / kdbxtool / models / group.py Group.expired   1 1 0   0%
src / kdbxtool / models / group.py Group.custom_icon   1 0 0   100%
src / kdbxtool / models / group.py Group.custom_icon   12 5 0   58%
src / kdbxtool / models / group.py Group.touch   1 0 0   100%
src / kdbxtool / models / group.py Group.reindex   12 0 0   100%
src / kdbxtool / models / group.py Group.add_entry   5 0 0   100%
src / kdbxtool / models / group.py Group.remove_entry   5 0 0   100%
src / kdbxtool / models / group.py Group.create_entry   12 0 0   100%
src / kdbxtool / models / group.py Group.add_subgroup   5 0 0   100%
src / kdbxtool / models / group.py Group._propagate_database   5 0 0   100%
src / kdbxtool / models / group.py Group.remove_subgroup   5 1 0   80%
src / kdbxtool / models / group.py Group.create_subgroup   2 0 0   100%
src / kdbxtool / models / group.py Group.move_to   18 0 0   100%
src / kdbxtool / models / group.py Group._is_descendant   6 1 0   83%
src / kdbxtool / models / group.py Group.iter_entries   7 0 0   100%
src / kdbxtool / models / group.py Group.iter_groups   4 0 0   100%
src / kdbxtool / models / group.py Group.find_entry_by_uuid   4 0 0   100%
src / kdbxtool / models / group.py Group.find_group_by_uuid   6 0 0   100%
src / kdbxtool / models / group.py Group.find_entries   26 1 0   96%
src / kdbxtool / models / group.py Group.find_entries_contains   17 3 0   82%
src / kdbxtool / models / group.py Group.find_entries_contains.contains   5 1 0   80%
src / kdbxtool / models / group.py Group.find_entries_regex   31 5 0   84%
src / kdbxtool / models / group.py Group.find_entries_regex.matches   3 0 0   100%
src / kdbxtool / models / group.py Group.find_groups   10 1 0   90%
src / kdbxtool / models / group.py Group.dump   18 2 0   89%
src / kdbxtool / models / group.py Group.__str__   2 0 0   100%
src / kdbxtool / models / group.py Group.__hash__   1 1 0   0%
src / kdbxtool / models / group.py Group.__eq__   3 1 0   67%
src / kdbxtool / models / group.py Group.create_root   3 0 0   100%
src / kdbxtool / models / group.py (no function)   67 0 3   100%
src / kdbxtool / models / times.py _now   1 0 0   100%
src / kdbxtool / models / times.py Times.__post_init__   2 1 0   50%
src / kdbxtool / models / times.py Times.expired   3 0 0   100%
src / kdbxtool / models / times.py Times.touch   4 0 0   100%
src / kdbxtool / models / times.py Times.increment_usage   2 0 0   100%
src / kdbxtool / models / times.py Times.update_location   2 0 0   100%
src / kdbxtool / models / times.py Times.create_new   2 0 0   100%
src / kdbxtool / models / times.py (no function)   21 0 0   100%
src / kdbxtool / parsing / __init__.py (no function)   5 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.read   6 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.read_u8   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.read_u16   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.read_u32   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.read_u64   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.read_bytes_prefixed   2 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.peek   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.skip   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.scope   4 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.remaining   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.exhausted   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext.position   1 0 0   100%
src / kdbxtool / parsing / context.py ParseContext._format_location   4 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write   1 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write_u8   1 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write_u16   1 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write_u32   1 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write_u64   1 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write_bytes_prefixed   2 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.write_tlv   7 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.build   1 0 0   100%
src / kdbxtool / parsing / context.py BuildContext.size   1 0 0   100%
src / kdbxtool / parsing / context.py (no function)   42 0 0   100%
src / kdbxtool / parsing / header.py KdbxHeader.parse   44 4 0   91%
src / kdbxtool / parsing / header.py KdbxHeader._parse_kdbx4_kdf   30 5 0   83%
src / kdbxtool / parsing / header.py KdbxHeader._parse_kdbx3_kdf   14 3 0   79%
src / kdbxtool / parsing / header.py KdbxHeader._parse_variant_dict   30 6 0   80%
src / kdbxtool / parsing / header.py KdbxHeader.to_bytes   14 0 0   100%
src / kdbxtool / parsing / header.py KdbxHeader._build_kdf_variant_dict   18 1 0   94%
src / kdbxtool / parsing / header.py KdbxHeader._build_kdf_variant_dict.add_entry   4 0 0   100%
src / kdbxtool / parsing / header.py (no function)   64 0 0   100%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader.__init__   2 0 0   100%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader.decrypt   26 4 0   85%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader._derive_master_key   4 1 0   75%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader._derive_cipher_key   1 0 0   100%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader._read_hashed_blocks   22 3 0   86%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader._create_synthetic_inner_header   4 1 0   75%
src / kdbxtool / parsing / kdbx3.py Kdbx3Reader._remove_pkcs7_padding   9 3 0   67%
src / kdbxtool / parsing / kdbx3.py read_kdbx3   2 0 0   100%
src / kdbxtool / parsing / kdbx3.py (no function)   19 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader.__init__   1 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader.decrypt   30 2 0   93%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader._derive_master_key   15 3 0   80%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader._derive_keys   3 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader._compute_block_hmac_key   2 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader._read_hmac_block_stream   22 2 0   91%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader._remove_pkcs7_padding   9 1 0   89%
src / kdbxtool / parsing / kdbx4.py Kdbx4Reader._parse_inner_header   24 1 0   96%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer.encrypt   22 1 0   95%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer._derive_master_key   11 3 0   73%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer._derive_keys   3 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer._compute_block_hmac_key   2 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer._build_inner_header   8 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer._add_pkcs7_padding   3 0 0   100%
src / kdbxtool / parsing / kdbx4.py Kdbx4Writer._build_hmac_block_stream   19 0 0   100%
src / kdbxtool / parsing / kdbx4.py read_kdbx4   2 0 0   100%
src / kdbxtool / parsing / kdbx4.py write_kdbx4   2 0 0   100%
src / kdbxtool / parsing / kdbx4.py (no function)   44 0 2   100%
src / kdbxtool / security / __init__.py (no function)   6 0 0   100%
src / kdbxtool / security / crypto.py Cipher.key_size   1 0 0   100%
src / kdbxtool / security / crypto.py Cipher.iv_size   5 0 0   100%
src / kdbxtool / security / crypto.py Cipher.display_name   5 0 0   100%
src / kdbxtool / security / crypto.py Cipher.from_uuid   4 0 0   100%
src / kdbxtool / security / crypto.py constant_time_compare   1 0 0   100%
src / kdbxtool / security / crypto.py secure_random_bytes   1 0 0   100%
src / kdbxtool / security / crypto.py compute_hmac_sha256   1 0 0   100%
src / kdbxtool / security / crypto.py verify_hmac_sha256   2 0 0   100%
src / kdbxtool / security / crypto.py CipherContext.__init__   9 1 0   89%
src / kdbxtool / security / crypto.py CipherContext.encrypt   8 0 0   100%
src / kdbxtool / security / crypto.py CipherContext.decrypt   8 0 0   100%
src / kdbxtool / security / crypto.py (no function)   33 3 2   91%
src / kdbxtool / security / kdf.py KdfType.display_name   2 0 0   100%
src / kdbxtool / security / kdf.py KdfType.from_uuid   4 0 0   100%
src / kdbxtool / security / kdf.py Argon2Config.__post_init__   4 0 0   100%
src / kdbxtool / security / kdf.py Argon2Config.validate_security   9 0 0   100%
src / kdbxtool / security / kdf.py Argon2Config.default   1 0 0   100%
src / kdbxtool / security / kdf.py Argon2Config.standard   4 0 0   100%
src / kdbxtool / security / kdf.py Argon2Config.high_security   4 0 0   100%
src / kdbxtool / security / kdf.py Argon2Config.fast   4 0 0   100%
src / kdbxtool / security / kdf.py AesKdfConfig.__post_init__   4 0 0   100%
src / kdbxtool / security / kdf.py AesKdfConfig.standard   4 0 0   100%
src / kdbxtool / security / kdf.py AesKdfConfig.high_security   4 0 0   100%
src / kdbxtool / security / kdf.py AesKdfConfig.fast   4 0 0   100%
src / kdbxtool / security / kdf.py derive_key_argon2   5 0 0   100%
src / kdbxtool / security / kdf.py derive_key_aes_kdf   17 0 0   100%
src / kdbxtool / security / kdf.py derive_composite_key   21 0 0   100%
src / kdbxtool / security / kdf.py (no function)   52 0 2   100%
src / kdbxtool / security / keyfile.py create_keyfile_bytes   10 1 0   90%
src / kdbxtool / security / keyfile.py create_keyfile   2 0 0   100%
src / kdbxtool / security / keyfile.py parse_keyfile   30 0 0   100%
src / kdbxtool / security / keyfile.py _create_xml_v2   4 0 0   100%
src / kdbxtool / security / keyfile.py _create_xml_v1   4 0 0   100%
src / kdbxtool / security / keyfile.py (no function)   17 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__init__   2 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.data   3 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__len__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__bool__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.zeroize   4 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__del__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__enter__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__exit__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__repr__   3 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__str__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__eq__   6 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.__hash__   1 0 0   100%
src / kdbxtool / security / memory.py SecureBytes.from_str   1 0 0   100%
src / kdbxtool / security / memory.py (no function)   19 0 0   100%
src / kdbxtool / security / totp.py TotpCode.remaining   3 0 0   100%
src / kdbxtool / security / totp.py TotpCode.expires_at   2 0 0   100%
src / kdbxtool / security / totp.py TotpCode.is_expired   1 0 0   100%
src / kdbxtool / security / totp.py TotpCode.__str__   1 0 0   100%
src / kdbxtool / security / totp.py parse_otpauth_uri   35 5 0   86%
src / kdbxtool / security / totp.py parse_keepassxc_legacy   16 2 0   88%
src / kdbxtool / security / totp.py generate_totp   15 1 0   93%
src / kdbxtool / security / totp.py (no function)   33 0 0   100%
src / kdbxtool / security / yubikey.py YubiKeyConfig.__post_init__   4 0 0   100%
src / kdbxtool / security / yubikey.py list_yubikeys   12 10 0   17%
src / kdbxtool / security / yubikey.py compute_challenge_response   37 35 0   5%
src / kdbxtool / security / yubikey.py check_slot_configured   24 22 0   8%
src / kdbxtool / security / yubikey.py (no function)   22 3 2   86%
src / kdbxtool / templates.py EntryTemplate._get_fields   9 1 0   89%
src / kdbxtool / templates.py (no function)   175 0 2   100%
Total     3302 296 29   91%

No items found using the specified filter.