Coverage report: 99%

Files Functions Classes

coverage.py v7.13.0, created at 2025-12-22 08:03 +0000

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

No items found using the specified filter.