Coverage report: 99%

Files Functions Classes

coverage.py v7.11.0, created at 2025-11-07 04:44 +0000

File function statements missing excluded branches partial coverage
bzfs_main/argparse_actions.py _add_snapshot_filter 3 0 0 2 0 100%
bzfs_main/argparse_actions.py _add_time_and_rank_snapshot_filter 4 0 0 2 0 100%
bzfs_main/argparse_actions.py has_timerange_filter 1 0 0 0 0 100%
bzfs_main/argparse_actions.py optimize_snapshot_filters 5 0 0 0 0 100%
bzfs_main/argparse_actions.py _merge_adjacent_snapshot_filters 11 0 0 6 0 100%
bzfs_main/argparse_actions.py _merge_adjacent_snapshot_regexes 32 0 0 14 0 100%
bzfs_main/argparse_actions.py _reorder_snapshot_time_filters 10 0 0 4 0 100%
bzfs_main/argparse_actions.py _reorder_snapshot_time_filters.reorder_time_filters_within_section 6 0 0 4 0 100%
bzfs_main/argparse_actions.py validate_no_argument_file 2 0 0 2 0 100%
bzfs_main/argparse_actions.py NonEmptyStringAction.__call__ 4 0 0 2 0 100%
bzfs_main/argparse_actions.py DatasetPairsAction.__call__ 28 0 0 16 0 100%
bzfs_main/argparse_actions.py SSHConfigFileNameAction.__call__ 6 0 0 4 0 100%
bzfs_main/argparse_actions.py SafeFileNameAction.__call__ 5 0 0 4 0 100%
bzfs_main/argparse_actions.py SafeDirectoryNameAction.__call__ 6 0 0 4 0 100%
bzfs_main/argparse_actions.py NewSnapshotFilterGroupAction.__call__ 4 0 0 4 0 100%
bzfs_main/argparse_actions.py FileOrLiteralAction.__call__ 24 0 0 14 0 100%
bzfs_main/argparse_actions.py IncludeSnapshotPlanAction.__call__ 5 0 0 2 0 100%
bzfs_main/argparse_actions.py IncludeSnapshotPlanAction._add_opts 17 0 0 8 0 100%
bzfs_main/argparse_actions.py DeleteDstSnapshotsExceptPlanAction.__call__ 6 0 0 2 0 100%
bzfs_main/argparse_actions.py TimeRangeAndRankRangeAction.__call__ 13 0 0 4 0 100%
bzfs_main/argparse_actions.py TimeRangeAndRankRangeAction.__call__.parse_time 12 0 0 4 0 100%
bzfs_main/argparse_actions.py TimeRangeAndRankRangeAction._get_include_snapshot_times 9 0 0 4 0 100%
bzfs_main/argparse_actions.py TimeRangeAndRankRangeAction._get_include_snapshot_times.utc_unix_time_in_seconds 5 0 0 4 0 100%
bzfs_main/argparse_actions.py TimeRangeAndRankRangeAction._parse_rankranges 24 0 0 12 0 100%
bzfs_main/argparse_actions.py TimeRangeAndRankRangeAction._parse_rankranges.parse_rank 11 0 0 4 0 100%
bzfs_main/argparse_actions.py CheckPercentRange.__call__ 12 0 0 2 0 100%
bzfs_main/argparse_actions.py (no function) 51 0 0 0 0 100%
bzfs_main/argparse_cli.py argument_parser 146 0 0 18 0 100%
bzfs_main/argparse_cli.py argument_parser.argparser_escape 1 0 0 0 0 100%
bzfs_main/argparse_cli.py argument_parser.hlp 1 0 0 0 0 100%
bzfs_main/argparse_cli.py argument_parser.h 1 0 0 0 0 100%
bzfs_main/argparse_cli.py (no function) 21 0 0 0 0 100%
bzfs_main/bzfs.py argument_parser 1 0 0 0 0 100%
bzfs_main/bzfs.py main 11 0 0 0 0 100%
bzfs_main/bzfs.py run_main 1 0 0 0 0 100%
bzfs_main/bzfs.py Job.__init__ 36 0 0 0 0 100%
bzfs_main/bzfs.py Job.shutdown 3 0 0 2 0 100%
bzfs_main/bzfs.py Job.terminate 2 0 0 0 0 100%
bzfs_main/bzfs.py Job.run_main 68 9 0 10 0 88%
bzfs_main/bzfs.py Job.run_main._reset_logger 2 0 0 2 1 75%
bzfs_main/bzfs.py Job.run_main.log_error_on_exit 1 0 0 0 0 100%
bzfs_main/bzfs.py Job.run_tasks 54 0 0 16 0 100%
bzfs_main/bzfs.py Job.append_exception 5 0 0 2 0 100%
bzfs_main/bzfs.py Job.sleep_until_next_daemon_iteration 15 0 0 2 0 100%
bzfs_main/bzfs.py Job.print_replication_stats 8 0 0 2 0 100%
bzfs_main/bzfs.py Job.validate_once 31 0 0 20 0 100%
bzfs_main/bzfs.py Job.validate_once.separate_abs_vs_rel_datasets 5 0 0 2 0 100%
bzfs_main/bzfs.py Job.validate_task 40 0 0 18 0 100%
bzfs_main/bzfs.py Job.sudo_cmd 23 0 0 16 0 100%
bzfs_main/bzfs.py Job.run_task 50 0 0 26 0 100%
bzfs_main/bzfs.py Job.run_task.filter_src_datasets 1 0 0 0 0 100%
bzfs_main/bzfs.py Job.list_src_datasets_task 14 0 0 2 0 100%
bzfs_main/bzfs.py Job.list_dst_datasets_task 17 0 0 4 0 100%
bzfs_main/bzfs.py Job.create_src_snapshots_task 21 0 0 10 0 100%
bzfs_main/bzfs.py Job.delete_destination_snapshots_task 15 0 0 2 0 100%
bzfs_main/bzfs.py Job.delete_destination_snapshots_task.delete_destination_snapshots 43 0 0 20 0 100%
bzfs_main/bzfs.py Job.delete_dst_datasets_task 15 0 0 6 0 100%
bzfs_main/bzfs.py Job.delete_empty_dst_datasets_task 21 0 0 6 0 100%
bzfs_main/bzfs.py Job.delete_empty_dst_datasets_task.compute_orphans 5 0 0 4 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots_task 13 0 0 2 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots 29 0 0 8 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots.monitor_last_modified_cache_file 2 0 0 0 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots.alert_msg 9 0 0 4 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots.check_alert 24 0 0 14 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots.alert_latest_snapshot 2 0 0 0 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots.alert_oldest_snapshot 2 0 0 0 0 100%
bzfs_main/bzfs.py Job.monitor_snapshots.find_stale_datasets_and_check_alerts 16 0 0 12 0 100%
bzfs_main/bzfs.py Job.replicate_datasets 35 0 0 8 0 100%
bzfs_main/bzfs.py Job.replicate_datasets.src2dst 1 0 0 0 0 100%
bzfs_main/bzfs.py Job.replicate_datasets.dst2src 1 0 0 0 0 100%
bzfs_main/bzfs.py Job.replicate_datasets.find_stale_datasets 28 0 0 8 0 100%
bzfs_main/bzfs.py Job.maybe_inject_delete 6 0 0 2 0 100%
bzfs_main/bzfs.py Job.maybe_inject_params 6 0 0 4 0 100%
bzfs_main/bzfs.py Job.recv_option_property_names 16 0 0 8 0 100%
bzfs_main/bzfs.py Job.root_datasets_if_recursive_zfs_snapshot_is_possible 23 0 0 10 0 100%
bzfs_main/bzfs.py Job.find_root_datasets 8 0 0 4 0 100%
bzfs_main/bzfs.py Job.find_datasets_to_snapshot 65 0 0 32 0 100%
bzfs_main/bzfs.py Job.find_datasets_to_snapshot.create_snapshot_if_latest_is_too_old 14 0 0 4 0 100%
bzfs_main/bzfs.py Job.find_datasets_to_snapshot.create_snapshot_fn 1 0 0 0 0 100%
bzfs_main/bzfs.py Job.find_datasets_to_snapshot.on_finish_dataset 2 0 0 2 0 100%
bzfs_main/bzfs.py Job.handle_minmax_snapshots 40 0 0 12 0 100%
bzfs_main/bzfs.py Job._cache_hits_msg 2 0 0 0 0 100%
bzfs_main/bzfs.py DatasetProperties.__init__ 2 0 0 0 0 100%
bzfs_main/bzfs.py parse_dataset_locator 31 0 0 20 1 98%
bzfs_main/bzfs.py parse_dataset_locator.convert_ipv6 1 0 0 0 0 100%
bzfs_main/bzfs.py validate_user_name 3 0 0 2 0 100%
bzfs_main/bzfs.py validate_host_name 3 0 0 2 0 100%
bzfs_main/bzfs.py validate_port 4 0 0 4 0 100%
bzfs_main/bzfs.py (no function) 93 1 0 4 1 98%
bzfs_main/bzfs_jobrunner.py argument_parser 56 0 0 10 0 100%
bzfs_main/bzfs_jobrunner.py main 7 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.__init__ 12 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.run_main 4 0 0 2 1 83%
bzfs_main/bzfs_jobrunner.py Job._run_main 169 0 0 46 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.zero_pad 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.jpad 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.runpad 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.update_subjob_name 5 0 0 4 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.resolve_dataset 9 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.resolve_dst_dataset 9 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.prune_src 8 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.monitor_snapshots_opts 4 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.build_monitor_plan 2 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job._run_main.build_monitor_plan.alert_dicts 6 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.replication_opts 9 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.skip_nonexisting_local_dst_pools 22 0 0 8 0 100%
bzfs_main/bzfs_jobrunner.py Job.skip_nonexisting_local_dst_pools.zpool 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.add_ssh_opts 7 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.add_log_file_opts 3 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.run_subjobs 24 0 0 6 0 100%
bzfs_main/bzfs_jobrunner.py Job.run_subjob 26 0 0 6 0 100%
bzfs_main/bzfs_jobrunner.py Job.run_worker_job_in_current_thread 15 0 0 4 0 100%
bzfs_main/bzfs_jobrunner.py Job._bzfs_run_main 3 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.run_worker_job_spawn_process_per_job 27 0 0 4 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_src_hosts 5 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_dst_hosts 8 0 0 4 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_dst_root_datasets 6 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_snapshot_plan 11 0 0 6 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_monitor_snapshot_plan 15 0 0 8 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_is_subset 7 0 0 6 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_host_name 2 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_non_empty_string 3 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_non_negative_int 3 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_true 2 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py Job.validate_type 9 0 0 8 0 100%
bzfs_main/bzfs_jobrunner.py Job.parse_src_hosts_from_cli_or_stdin 19 0 0 8 0 100%
bzfs_main/bzfs_jobrunner.py Job.die 2 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py Job.get_localhost_ips 9 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py RejectArgumentAction.__call__ 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py _dedupe 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py _flatten 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py _sanitize 3 0 0 2 0 100%
bzfs_main/bzfs_jobrunner.py _log_suffix 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py _pretty_print_formatter 3 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py _pretty_print_formatter.PrettyPrintFormatter.__str__ 2 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py _detect_loopback_address 15 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py convert_ipv6 1 0 0 0 0 100%
bzfs_main/bzfs_jobrunner.py (no function) 77 1 0 2 1 97%
bzfs_main/check_range.py CheckRange.__init__ 8 0 0 8 0 100%
bzfs_main/check_range.py CheckRange.interval 11 0 0 8 0 100%
bzfs_main/check_range.py CheckRange.__call__ 4 0 0 4 0 100%
bzfs_main/check_range.py (no function) 9 0 0 0 0 100%
bzfs_main/compare_snapshot_lists.py run_compare_snapshot_lists 45 0 0 8 0 100%
bzfs_main/compare_snapshot_lists.py run_compare_snapshot_lists.zfs_list_snapshot_iterator 8 0 0 4 0 100%
bzfs_main/compare_snapshot_lists.py run_compare_snapshot_lists.snapshot_iterator 15 0 0 6 0 100%
bzfs_main/compare_snapshot_lists.py run_compare_snapshot_lists.print_dataset 74 0 0 22 0 100%
bzfs_main/compare_snapshot_lists.py _print_datasets 13 0 0 6 0 100%
bzfs_main/compare_snapshot_lists.py _merge_sorted_iterators 26 0 0 16 0 100%
bzfs_main/compare_snapshot_lists.py (no function) 21 0 3 0 0 100%
bzfs_main/configuration.py LogParams.__init__ 53 0 0 8 0 100%
bzfs_main/configuration.py LogParams.__repr__ 1 0 0 0 0 100%
bzfs_main/configuration.py Params.__init__ 127 0 0 12 0 100%
bzfs_main/configuration.py Params.split_args 6 0 0 2 0 100%
bzfs_main/configuration.py Params.validate_arg 6 0 0 4 0 100%
bzfs_main/configuration.py Params.validate_arg_str 4 0 0 2 0 100%
bzfs_main/configuration.py Params._validate_quoting 3 0 0 4 0 100%
bzfs_main/configuration.py Params._fix_recv_opts 1 0 0 0 0 100%
bzfs_main/configuration.py Params._fix_send_opts 1 0 0 0 0 100%
bzfs_main/configuration.py Params._program_name 11 0 0 10 0 100%
bzfs_main/configuration.py Params._unset_matching_env_vars 10 0 0 8 0 100%
bzfs_main/configuration.py Params.lock_file_name 8 0 0 0 0 100%
bzfs_main/configuration.py Params.dry 1 0 0 0 0 100%
bzfs_main/configuration.py Params.is_program_available 1 0 0 0 0 100%
bzfs_main/configuration.py Remote.__init__ 39 0 0 6 0 100%
bzfs_main/configuration.py Remote.local_ssh_command 26 0 0 14 1 98%
bzfs_main/configuration.py Remote.local_ssh_command.sanitize 3 0 0 0 0 100%
bzfs_main/configuration.py Remote.cache_key 1 0 0 0 0 100%
bzfs_main/configuration.py Remote.cache_namespace 3 0 0 2 0 100%
bzfs_main/configuration.py Remote.__repr__ 1 0 0 0 0 100%
bzfs_main/configuration.py CopyPropertiesConfig.__init__ 13 0 0 2 0 100%
bzfs_main/configuration.py CopyPropertiesConfig.__repr__ 1 0 0 0 0 100%
bzfs_main/configuration.py SnapshotLabel.__str__ 1 0 0 0 0 100%
bzfs_main/configuration.py SnapshotLabel.notimestamp_str 1 0 0 0 0 100%
bzfs_main/configuration.py SnapshotLabel.validate_label 21 0 0 24 0 100%
bzfs_main/configuration.py CreateSrcSnapshotConfig.__init__ 35 0 0 16 0 100%
bzfs_main/configuration.py CreateSrcSnapshotConfig.__init__.suffix_key 9 0 0 8 0 100%
bzfs_main/configuration.py CreateSrcSnapshotConfig.snapshot_labels 9 0 0 4 0 100%
bzfs_main/configuration.py CreateSrcSnapshotConfig.__repr__ 1 0 0 0 0 100%
bzfs_main/configuration.py MonitorSnapshotsConfig.__init__ 50 0 0 28 0 100%
bzfs_main/configuration.py MonitorSnapshotsConfig.__init__.alert_sort_key 3 0 0 0 0 100%
bzfs_main/configuration.py MonitorSnapshotsConfig.__repr__ 1 0 0 0 0 100%
bzfs_main/configuration.py _fix_send_recv_opts 28 0 0 20 0 100%
bzfs_main/configuration.py _delete_stale_files 21 2 0 14 1 91%
bzfs_main/configuration.py _create_symlink 2 0 0 0 0 100%
bzfs_main/configuration.py (no function) 85 0 2 0 0 100%
bzfs_main/connection.py run_ssh_command 25 0 0 6 0 100%
bzfs_main/connection.py try_ssh_command 12 0 0 4 0 100%
bzfs_main/connection.py refresh_ssh_connection_if_necessary 32 0 0 14 0 100%
bzfs_main/connection.py timeout 8 0 0 4 0 100%
bzfs_main/connection.py maybe_inject_error 9 0 0 6 0 100%
bzfs_main/connection.py decrement_injection_counter 5 0 0 2 0 100%
bzfs_main/connection.py Connection.__init__ 11 0 0 0 0 100%
bzfs_main/connection.py Connection.__repr__ 1 0 0 0 0 100%
bzfs_main/connection.py Connection.increment_free 3 0 0 0 0 100%
bzfs_main/connection.py Connection.is_full 1 0 0 0 0 100%
bzfs_main/connection.py Connection.update_last_modified 1 0 0 0 0 100%
bzfs_main/connection.py Connection.shutdown 12 2 0 6 0 89%
bzfs_main/connection.py ConnectionPool.__init__ 12 0 0 2 0 100%
bzfs_main/connection.py ConnectionPool.connection 4 0 0 0 0 100%
bzfs_main/connection.py ConnectionPool.get_connection 13 0 0 4 0 100%
bzfs_main/connection.py ConnectionPool.return_connection 7 0 0 2 0 100%
bzfs_main/connection.py ConnectionPool.shutdown 6 0 0 4 0 100%
bzfs_main/connection.py ConnectionPool.__repr__ 3 0 0 0 0 100%
bzfs_main/connection.py ConnectionPools.__init__ 1 0 0 0 0 100%
bzfs_main/connection.py ConnectionPools.__repr__ 1 0 0 0 0 100%
bzfs_main/connection.py ConnectionPools.pool 1 0 0 0 0 100%
bzfs_main/connection.py ConnectionPools.shutdown 2 0 0 2 0 100%
bzfs_main/connection.py (no function) 47 0 3 0 0 100%
bzfs_main/connection_lease.py ConnectionLease.release 5 0 0 0 0 100%
bzfs_main/connection_lease.py ConnectionLease.set_socket_mtime_to_now 4 0 0 0 0 100%
bzfs_main/connection_lease.py ConnectionLeaseManager.__init__ 19 0 0 0 0 100%
bzfs_main/connection_lease.py ConnectionLeaseManager._validate_dirs 4 0 0 2 0 100%
bzfs_main/connection_lease.py ConnectionLeaseManager.acquire 12 0 0 4 0 100%
bzfs_main/connection_lease.py ConnectionLeaseManager._find_and_acquire 19 0 0 10 0 100%
bzfs_main/connection_lease.py ConnectionLeaseManager._create_and_acquire 13 0 0 4 0 100%
bzfs_main/connection_lease.py ConnectionLeaseManager._try_lock 19 0 0 6 0 100%
bzfs_main/connection_lease.py (no function) 28 0 0 0 0 100%
bzfs_main/detect.py detect_available_programs 79 0 0 46 1 99%
bzfs_main/detect.py detect_available_programs.run_detect 10 0 0 2 0 100%
bzfs_main/detect.py _disable_program 2 0 0 2 0 100%
bzfs_main/detect.py _find_available_programs 14 0 0 0 0 100%
bzfs_main/detect.py _detect_available_programs_remote 45 2 0 18 3 92%
bzfs_main/detect.py is_dummy 1 0 0 0 0 100%
bzfs_main/detect.py _detect_zpool_features 21 4 0 10 0 81%
bzfs_main/detect.py is_zpool_feature_enabled_or_active 1 0 0 0 0 100%
bzfs_main/detect.py are_bookmarks_enabled 1 0 0 0 0 100%
bzfs_main/detect.py is_caching_snapshots 1 0 0 0 0 100%
bzfs_main/detect.py is_version_at_least 1 0 0 0 0 100%
bzfs_main/detect.py _validate_default_shell 2 0 0 2 0 100%
bzfs_main/detect.py (no function) 31 0 3 0 0 100%
bzfs_main/filter.py filter_datasets 28 0 0 20 0 100%
bzfs_main/filter.py _filter_datasets_by_exclude_property 30 0 0 12 0 100%
bzfs_main/filter.py filter_snapshots 24 0 0 12 0 100%
bzfs_main/filter.py filter_snapshots.resolve_timerange 9 0 0 4 0 100%
bzfs_main/filter.py _filter_snapshots_by_regex 17 0 0 12 0 100%
bzfs_main/filter.py _filter_snapshots_by_creation_time 16 0 0 10 0 100%
bzfs_main/filter.py _filter_snapshots_by_creation_time_and_rank 34 0 0 14 0 100%
bzfs_main/filter.py _filter_snapshots_by_creation_time_and_rank.get_idx 4 0 0 0 0 100%
bzfs_main/filter.py filter_properties 11 0 0 8 0 100%
bzfs_main/filter.py filter_lines 3 0 0 2 0 100%
bzfs_main/filter.py filter_lines_except 3 0 0 2 0 100%
bzfs_main/filter.py dataset_regexes 18 0 0 14 0 100%
bzfs_main/filter.py (no function) 23 0 3 0 0 100%
bzfs_main/incremental_send_steps.py incremental_send_steps 37 0 0 18 0 100%
bzfs_main/incremental_send_steps.py incremental_send_steps.append_run 9 0 0 6 0 100%
bzfs_main/incremental_send_steps.py send_step_to_str 1 0 0 0 0 100%
bzfs_main/incremental_send_steps.py (no function) 3 0 0 0 0 100%
bzfs_main/loggers.py _get_logger_name 1 0 0 0 0 100%
bzfs_main/loggers.py _resolve_logger_name 2 0 0 0 0 100%
bzfs_main/loggers.py reset_logger 9 0 0 4 0 100%
bzfs_main/loggers.py get_logger 4 0 0 2 0 100%
bzfs_main/loggers.py _get_default_logger 25 0 0 4 0 100%
bzfs_main/loggers.py get_default_log_formatter 9 0 0 0 0 100%
bzfs_main/loggers.py get_default_log_formatter.DefaultLogFormatter.format 22 0 0 10 0 100%
bzfs_main/loggers.py get_default_log_formatter.DefaultLogFormatter.ljust_cols 9 0 0 4 0 100%
bzfs_main/loggers.py get_simple_logger 11 0 0 0 0 100%
bzfs_main/loggers.py get_simple_logger.LevelFormatter.format 3 0 0 0 0 100%
bzfs_main/loggers.py set_logging_runtime_defaults 7 0 0 0 0 100%
bzfs_main/loggers.py _get_syslog_address 9 0 0 2 0 100%
bzfs_main/loggers.py (no function) 19 0 2 0 0 100%
bzfs_main/parallel_batch_cmd.py run_ssh_cmd_batched 1 0 0 0 0 100%
bzfs_main/parallel_batch_cmd.py itr_ssh_cmd_batched 2 0 0 0 0 100%
bzfs_main/parallel_batch_cmd.py run_ssh_cmd_parallel 1 0 0 0 0 100%
bzfs_main/parallel_batch_cmd.py itr_ssh_cmd_parallel 1 0 0 0 0 100%
bzfs_main/parallel_batch_cmd.py zfs_list_snapshots_in_parallel 3 0 0 0 0 100%
bzfs_main/parallel_batch_cmd.py _max_batch_bytes 8 0 0 0 0 100%
bzfs_main/parallel_batch_cmd.py _get_max_command_line_bytes 6 0 0 2 0 100%
bzfs_main/parallel_batch_cmd.py (no function) 15 0 3 0 0 100%
bzfs_main/parallel_iterator.py parallel_iterator 2 0 0 0 0 100%
bzfs_main/parallel_iterator.py parallel_iterator_results 28 0 0 18 0 100%
bzfs_main/parallel_iterator.py run_in_parallel 5 0 0 0 0 100%
bzfs_main/parallel_iterator.py batch_cmd_iterator 14 0 0 6 0 100%
bzfs_main/parallel_iterator.py get_max_command_line_bytes 5 0 0 0 0 100%
bzfs_main/parallel_iterator.py (no function) 20 0 0 0 0 100%
bzfs_main/parallel_tasktree.py _build_dataset_tree 15 0 0 6 0 100%
bzfs_main/parallel_tasktree.py _build_dataset_tree.compact 4 0 0 4 0 100%
bzfs_main/parallel_tasktree.py _build_dataset_tree_and_find_roots 12 0 0 6 0 100%
bzfs_main/parallel_tasktree.py _TreeNodeMutableAttributes.__init__ 3 0 0 0 0 100%
bzfs_main/parallel_tasktree.py _TreeNode.__repr__ 2 0 0 0 0 100%
bzfs_main/parallel_tasktree.py _make_tree_node 1 0 0 0 0 100%
bzfs_main/parallel_tasktree.py process_datasets_in_parallel 40 0 0 8 0 100%
bzfs_main/parallel_tasktree.py process_datasets_in_parallel.submit_datasets 17 0 0 8 0 100%
bzfs_main/parallel_tasktree.py process_datasets_in_parallel.complete_datasets 12 0 0 6 0 100%
bzfs_main/parallel_tasktree.py _simple_enqueue_children 6 0 0 4 0 100%
bzfs_main/parallel_tasktree.py _complete_job_with_barriers 21 0 0 14 0 100%
bzfs_main/parallel_tasktree.py _complete_job_with_barriers.enqueue_children 19 0 0 8 0 100%
bzfs_main/parallel_tasktree.py (no function) 35 0 0 0 0 100%
bzfs_main/parallel_tasktree_policy.py process_datasets_in_parallel_and_fault_tolerant 10 0 0 0 0 100%
bzfs_main/parallel_tasktree_policy.py process_datasets_in_parallel_and_fault_tolerant._process_dataset 13 0 0 2 0 100%
bzfs_main/parallel_tasktree_policy.py process_datasets_in_parallel_and_fault_tolerant._process_dataset._completion_callback 12 0 0 6 0 100%
bzfs_main/parallel_tasktree_policy.py (no function) 13 0 0 0 0 100%
bzfs_main/period_anchors.py PeriodAnchors.parse 2 0 0 0 0 100%
bzfs_main/period_anchors.py PeriodAnchors.round_datetime_up_to_duration_multiple 62 0 0 28 0 100%
bzfs_main/period_anchors.py PeriodAnchors.round_datetime_up_to_duration_multiple.add_months 5 0 0 0 0 100%
bzfs_main/period_anchors.py PeriodAnchors.round_datetime_up_to_duration_multiple.add_years 3 0 0 0 0 100%
bzfs_main/period_anchors.py (no function) 43 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter.__init__ 13 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter.start 4 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter.stop 9 0 0 4 0 100%
bzfs_main/progress_reporter.py ProgressReporter.pause 1 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter.reset 1 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter._append_state 8 0 0 4 0 100%
bzfs_main/progress_reporter.py ProgressReporter.enqueue_pv_log_file 3 0 0 2 0 100%
bzfs_main/progress_reporter.py ProgressReporter._run 14 0 0 4 1 94%
bzfs_main/progress_reporter.py ProgressReporter._run_internal 79 0 0 22 0 100%
bzfs_main/progress_reporter.py ProgressReporter._update_transfer_stat 4 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter._parse_pv_line 11 0 0 4 0 100%
bzfs_main/progress_reporter.py ProgressReporter._format_sent_bytes 2 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter._format_duration 4 0 0 0 0 100%
bzfs_main/progress_reporter.py ProgressReporter._get_update_intervals 6 0 0 0 0 100%
bzfs_main/progress_reporter.py _pv_size_to_bytes 11 0 0 4 0 100%
bzfs_main/progress_reporter.py count_num_bytes_transferred_by_zfs_send 19 2 0 10 0 93%
bzfs_main/progress_reporter.py count_num_bytes_transferred_by_zfs_send.parse_pv_line 5 0 0 2 0 100%
bzfs_main/progress_reporter.py (no function) 54 0 0 0 0 100%
bzfs_main/replication.py replicate_dataset 28 0 0 10 0 100%
bzfs_main/replication.py _list_and_filter_src_and_dst_snapshots 45 0 0 20 0 100%
bzfs_main/replication.py _rollback_dst_dataset_if_necessary 39 0 0 14 0 100%
bzfs_main/replication.py _rollback_dst_dataset_if_necessary.latest_common_snapshot 5 0 0 4 0 100%
bzfs_main/replication.py _replicate_dataset_fully 49 0 0 24 2 97%
bzfs_main/replication.py _replicate_dataset_incrementally 52 0 0 16 0 100%
bzfs_main/replication.py _replicate_dataset_incrementally.replication_candidates 21 0 0 6 0 100%
bzfs_main/replication.py _format_size 1 0 0 0 0 100%
bzfs_main/replication.py _prepare_zfs_send_receive 79 0 0 58 0 100%
bzfs_main/replication.py _run_zfs_send_receive 29 0 0 6 0 100%
bzfs_main/replication.py _clear_resumable_recv_state_if_necessary 13 0 0 10 0 100%
bzfs_main/replication.py _clear_resumable_recv_state_if_necessary.clear_resumable_recv_state 5 0 0 0 0 100%
bzfs_main/replication.py _recv_resume_token 23 0 0 12 0 100%
bzfs_main/replication.py _mbuffer_cmd 4 0 0 2 0 100%
bzfs_main/replication.py _compress_cmd 3 0 0 2 0 100%
bzfs_main/replication.py _decompress_cmd 3 0 0 2 0 100%
bzfs_main/replication.py _pv_cmd 26 0 0 16 0 100%
bzfs_main/replication.py _squote 2 0 0 0 0 100%
bzfs_main/replication.py _dquote 1 0 0 0 0 100%
bzfs_main/replication.py delete_snapshots 5 0 0 2 0 100%
bzfs_main/replication.py _delete_snapshot 10 0 0 0 0 100%
bzfs_main/replication.py _delete_snapshot_cmd 1 0 0 0 0 100%
bzfs_main/replication.py delete_bookmarks 6 0 0 2 0 100%
bzfs_main/replication.py delete_datasets 10 0 0 4 0 100%
bzfs_main/replication.py _create_zfs_filesystem 15 1 0 8 1 91%
bzfs_main/replication.py _create_zfs_bookmarks 5 0 0 2 0 100%
bzfs_main/replication.py _create_zfs_bookmarks.create_zfs_bookmark 9 0 0 2 0 100%
bzfs_main/replication.py _estimate_send_size 23 2 0 8 2 87%
bzfs_main/replication.py _estimate_send_sizes_in_parallel 6 0 0 2 0 100%
bzfs_main/replication.py _estimate_send_sizes_in_parallel.iterator_builder 2 0 0 0 0 100%
bzfs_main/replication.py _zfs_set 5 0 0 2 0 100%
bzfs_main/replication.py _zfs_get 21 0 0 8 0 100%
bzfs_main/replication.py _incremental_send_steps_wrapper 2 0 0 0 0 100%
bzfs_main/replication.py _add_recv_property_options 38 2 0 22 0 97%
bzfs_main/replication.py _check_zfs_dataset_busy 15 0 0 6 0 100%
bzfs_main/replication.py _is_zfs_dataset_busy 4 0 0 0 0 100%
bzfs_main/replication.py (no function) 59 0 3 0 0 100%
bzfs_main/retry.py RetryPolicy.__init__ 16 0 0 0 0 100%
bzfs_main/retry.py RetryPolicy.__repr__ 1 0 0 0 0 100%
bzfs_main/retry.py RetryPolicy.no_retries 1 0 0 0 0 100%
bzfs_main/retry.py run_with_retries 26 0 0 8 0 100%
bzfs_main/retry.py RetryableError.__init__ 2 0 0 0 0 100%
bzfs_main/retry.py (no function) 21 0 0 0 0 100%
bzfs_main/snapshot_cache.py SnapshotCache.__init__ 1 0 0 0 0 100%
bzfs_main/snapshot_cache.py SnapshotCache.get_snapshots_changed 1 0 0 0 0 100%
bzfs_main/snapshot_cache.py SnapshotCache.get_snapshots_changed2 5 0 0 0 0 100%
bzfs_main/snapshot_cache.py SnapshotCache.last_modified_cache_file 4 0 0 0 0 100%
bzfs_main/snapshot_cache.py SnapshotCache.invalidate_last_modified_cache_dataset 12 2 0 4 1 81%
bzfs_main/snapshot_cache.py SnapshotCache.update_last_modified_cache 18 2 0 8 0 92%
bzfs_main/snapshot_cache.py SnapshotCache.zfs_get_snapshots_changed 18 0 0 10 0 100%
bzfs_main/snapshot_cache.py SnapshotCache.zfs_get_snapshots_changed.try_zfs_list_command 6 2 0 0 0 67%
bzfs_main/snapshot_cache.py set_last_modification_time_safe 5 0 0 0 0 100%
bzfs_main/snapshot_cache.py set_last_modification_time 22 0 0 4 0 100%
bzfs_main/snapshot_cache.py (no function) 24 0 3 0 0 100%
bzfs_main/utils.py getenv_any 1 0 0 0 0 100%
bzfs_main/utils.py getenv_int 1 0 0 0 0 100%
bzfs_main/utils.py getenv_bool 1 0 0 0 0 100%
bzfs_main/utils.py cut 8 0 0 4 0 100%
bzfs_main/utils.py drain 2 0 0 2 0 100%
bzfs_main/utils.py shuffle_dict 3 0 0 0 0 100%
bzfs_main/utils.py sorted_dict 1 0 0 0 0 100%
bzfs_main/utils.py tail 4 0 0 2 0 100%
bzfs_main/utils.py replace_capturing_groups_with_non_capturing_groups 11 0 0 8 0 100%
bzfs_main/utils.py get_home_directory 1 0 0 0 0 100%
bzfs_main/utils.py human_readable_bytes 10 0 0 2 0 100%
bzfs_main/utils.py human_readable_duration 21 0 0 12 0 100%
bzfs_main/utils.py human_readable_float 8 0 0 2 0 100%
bzfs_main/utils.py percent 2 0 0 0 0 100%
bzfs_main/utils.py open_nofollow 21 0 0 10 0 100%
bzfs_main/utils.py close_quietly 5 0 0 2 0 100%
bzfs_main/utils.py find_match 15 0 1 14 0 100%
bzfs_main/utils.py is_descendant 1 0 0 0 0 100%
bzfs_main/utils.py has_duplicates 1 0 0 0 0 100%
bzfs_main/utils.py has_siblings 16 0 0 8 0 100%
bzfs_main/utils.py dry 1 0 0 0 0 100%
bzfs_main/utils.py relativize_dataset 1 0 0 0 0 100%
bzfs_main/utils.py dataset_paths 7 0 0 4 0 100%
bzfs_main/utils.py replace_prefix 2 0 0 0 0 100%
bzfs_main/utils.py replace_in_lines 2 0 0 2 0 100%
bzfs_main/utils.py append_if_absent 4 0 0 4 0 100%
bzfs_main/utils.py xappend 6 0 0 6 0 100%
bzfs_main/utils.py is_included 13 0 0 12 0 100%
bzfs_main/utils.py compile_regexes 17 0 0 14 0 100%
bzfs_main/utils.py list_formatter 3 0 0 0 0 100%
bzfs_main/utils.py list_formatter.CustomListFormatter.__str__ 2 0 0 0 0 100%
bzfs_main/utils.py pretty_print_formatter 3 0 0 0 0 100%
bzfs_main/utils.py pretty_print_formatter.PrettyPrintFormatter.__str__ 2 0 0 0 0 100%
bzfs_main/utils.py stderr_to_str 1 0 0 0 0 100%
bzfs_main/utils.py xprint 4 0 0 2 0 100%
bzfs_main/utils.py sha256_hex 1 0 0 0 0 100%
bzfs_main/utils.py sha256_urlsafe_base64 3 0 0 0 0 100%
bzfs_main/utils.py sha256_128_urlsafe_base64 2 0 0 0 0 100%
bzfs_main/utils.py sha256_85_urlsafe_base64 2 0 0 0 0 100%
bzfs_main/utils.py urlsafe_base64 5 0 0 0 0 100%
bzfs_main/utils.py die 5 0 0 2 0 100%
bzfs_main/utils.py subprocess_run 29 0 0 10 0 100%
bzfs_main/utils.py terminate_process_subtree 12 0 0 6 0 100%
bzfs_main/utils.py _get_descendant_processes 21 0 0 6 0 100%
bzfs_main/utils.py _get_descendant_processes.recursive_append 3 0 0 2 0 100%
bzfs_main/utils.py termination_signal_handler 8 0 0 0 0 100%
bzfs_main/utils.py termination_signal_handler._handler 2 0 0 0 0 100%
bzfs_main/utils.py Subprocesses.__init__ 2 0 0 0 0 100%
bzfs_main/utils.py Subprocesses.subprocess_run 1 0 0 0 0 100%
bzfs_main/utils.py Subprocesses.register_child_pid 2 0 0 0 0 100%
bzfs_main/utils.py Subprocesses.unregister_child_pid 2 0 0 0 0 100%
bzfs_main/utils.py Subprocesses.terminate_process_subtrees 4 0 0 0 0 100%
bzfs_main/utils.py pid_exists 11 0 0 6 0 100%
bzfs_main/utils.py nprefix 1 0 0 0 0 100%
bzfs_main/utils.py ninfix 1 0 0 0 0 100%
bzfs_main/utils.py nsuffix 1 0 0 0 0 100%
bzfs_main/utils.py format_dict 1 0 0 0 0 100%
bzfs_main/utils.py format_obj 1 0 0 0 0 100%
bzfs_main/utils.py validate_dataset_name 3 0 0 2 0 100%
bzfs_main/utils.py validate_property_name 4 0 0 2 0 100%
bzfs_main/utils.py validate_is_not_a_symlink 2 0 0 2 0 100%
bzfs_main/utils.py validate_file_permissions 7 0 0 4 0 100%
bzfs_main/utils.py parse_duration_to_milliseconds 10 0 0 4 0 100%
bzfs_main/utils.py unixtime_fromisoformat 1 0 0 0 0 100%
bzfs_main/utils.py isotime_from_unixtime 3 0 0 0 0 100%
bzfs_main/utils.py current_datetime 3 0 0 2 0 100%
bzfs_main/utils.py get_timezone 14 0 0 8 0 100%
bzfs_main/utils.py SnapshotPeriods.__init__ 4 0 0 0 0 100%
bzfs_main/utils.py SnapshotPeriods.suffix_to_duration0 1 0 0 0 0 100%
bzfs_main/utils.py SnapshotPeriods.suffix_to_duration1 1 0 0 0 0 100%
bzfs_main/utils.py SnapshotPeriods._suffix_to_duration 6 0 0 2 0 100%
bzfs_main/utils.py SnapshotPeriods.label_milliseconds 4 0 0 0 0 100%
bzfs_main/utils.py JobStats.__init__ 9 0 0 0 0 100%
bzfs_main/utils.py JobStats.submit_job 5 0 0 0 0 100%
bzfs_main/utils.py JobStats.complete_job 14 0 0 0 0 100%
bzfs_main/utils.py JobStats.__repr__ 5 0 0 0 0 100%
bzfs_main/utils.py JobStats.__repr__.pct 1 0 0 0 0 100%
bzfs_main/utils.py Comparable.__lt__ 0 0 1 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.__init__ 2 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.clear 1 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.push 1 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.pop 1 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.peek 1 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.remove 6 0 0 2 0 100%
bzfs_main/utils.py SmallPriorityQueue.__len__ 1 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.__contains__ 3 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.__iter__ 1 0 0 0 0 100%
bzfs_main/utils.py SmallPriorityQueue.__repr__ 1 0 0 0 0 100%
bzfs_main/utils.py SortedInterner.__init__ 1 0 0 0 0 100%
bzfs_main/utils.py SortedInterner.interned 3 0 0 0 0 100%
bzfs_main/utils.py SortedInterner.__contains__ 1 0 0 0 0 100%
bzfs_main/utils.py binary_search 2 0 0 0 0 100%
bzfs_main/utils.py Interner.__init__ 1 0 0 0 0 100%
bzfs_main/utils.py Interner.intern 1 0 0 0 0 100%
bzfs_main/utils.py Interner.interned 1 0 0 0 0 100%
bzfs_main/utils.py Interner.__contains__ 1 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.__init__ 3 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.value 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.value 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.get_and_set 4 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.compare_and_set 5 0 0 2 0 100%
bzfs_main/utils.py SynchronizedBool.__bool__ 1 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.__repr__ 1 0 0 0 0 100%
bzfs_main/utils.py SynchronizedBool.__str__ 1 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__init__ 3 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__getitem__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__setitem__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__delitem__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__contains__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__len__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__repr__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.__str__ 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.get 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.pop 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.clear 2 0 0 0 0 100%
bzfs_main/utils.py SynchronizedDict.items 2 0 0 0 0 100%
bzfs_main/utils.py InterruptibleSleep.__init__ 3 0 0 0 0 100%
bzfs_main/utils.py InterruptibleSleep.sleep 8 0 0 4 0 100%
bzfs_main/utils.py InterruptibleSleep.interrupt 4 0 0 2 0 100%
bzfs_main/utils.py InterruptibleSleep.reset 2 0 0 0 0 100%
bzfs_main/utils.py SynchronousExecutor.__init__ 1 0 0 0 0 100%
bzfs_main/utils.py SynchronousExecutor.submit 9 0 0 2 0 100%
bzfs_main/utils.py SynchronousExecutor.shutdown 1 0 0 0 0 100%
bzfs_main/utils.py SynchronousExecutor.executor_for 1 0 0 0 0 100%
bzfs_main/utils.py _XFinally.__init__ 1 0 0 0 0 100%
bzfs_main/utils.py _XFinally.__exit__ 8 0 0 2 0 100%
bzfs_main/utils.py xfinally 1 0 0 0 0 100%
bzfs_main/utils.py (no function) 193 0 3 0 0 100%
Total   6162 34 30 1894 18 99%

No items found using the specified filter.