Coverage report: 99.00%

Files Functions Classes

coverage.py v7.13.4, created at 2026-10-16 10:13 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
netbox_interface_name_rules / __init__.py InterfaceNameRulesConfig.ready   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / __init__.py (no function)   100.00% 16 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / api / __init__.py (no function)   100.00% 0 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / api / serializers.py (no function)   100.00% 7 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / api / urls.py (no function)   100.00% 6 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / api / views.py InterfaceNameRuleViewSet._enqueue_bulk_job   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / api / views.py (no function)   100.00% 10 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / branching.py check_version   100.00% 2 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / branching.py installed_version   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / branching.py ready   100.00% 8 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / branching.py _marking_a_replay   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / branching.py _marking_a_replay.replay   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / branching.py replay_in_progress   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / branching.py branch_identity   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / branching.py activate_on   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / branching.py (no function)   100.00% 18 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / choices.py (no function)   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py pinned_rule_cache   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py find_matching_rule   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py build_variables   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py evaluate_name_template   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _get_parent_module_type   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / engine.py _selected_rule   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py supports_channelization   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _vc_position_re   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py supports_vc_position_token   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _touches_a_family   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _run_scope   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _rename_outcome   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _rename_outcomes   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _unresolved_outcomes   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _raw_names_at   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / engine.py apply_interface_name_rules   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py module_rule_outcomes   100.00% 11 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / engine.py _kept_flat_family   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _left_without_a_rule   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _has_stale_parent_bay   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _acted_on_names   100.00% 10 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / engine.py _apply_rule_to_module   100.00% 27 0 0   100.00% 14 0   100.00%
netbox_interface_name_rules / engine.py predict_rule_output   100.00% 9 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py reapply_module_rules   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py device_module_rule_outcomes   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py ModuleNaming.of   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py ModuleNaming.variables   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py ModuleNaming.at_chassis_position   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py ModuleNaming.rule   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py ModuleNaming.selects_another_rule   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py ModuleNaming.previous_forms   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py read_subtree_naming   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py committed_modules   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py pinned_reapply   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _device_interface_rules   100.00% 7 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _matches_device_interface   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _apply_device_rule_to_families   100.00% 20 0 0   100.00% 10 0   100.00%
netbox_interface_name_rules / engine.py apply_device_interface_rules   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / engine.py device_interface_rule_outcomes   100.00% 16 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / engine.py _flag_rule_potentially_deprecated   100.00% 14 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _matching_moduletype_pks   100.00% 6 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py has_applicable_interfaces   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _build_module_qs   100.00% 11 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / engine.py _member_detail   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _plan_details   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _plan_changes_names   100.00% 3 0 2   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _plan_entry   100.00% 7 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / engine.py _plan_root_name   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py _preview_plans   100.00% 6 0 2   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _installed_flat_entry   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py _process_module   100.00% 22 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / engine.py _count_remaining_interfaces   100.00% 3 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py find_interfaces_for_rule   100.00% 19 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / engine.py _batch_modules   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py apply_rule_to_existing   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py find_convertible_families   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / engine.py convert_flat_families   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / engine.py (no function)   100.00% 86 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / __init__.py (no function)   100.00% 13 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py ModuleFamilyPlans.plans   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py BatchOutcome.changed_count   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py BatchOutcome.skipped_members   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py BatchOutcome.changed_families   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py BatchOutcome.blocked_families   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py execute_family_plan   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / batch.py _is_channel   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py _is_top_level   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py _creation_plan   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / batch.py _family_bases   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py _creation_plans   100.00% 9 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / batch.py _is_candidate   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / batch.py _in_scope_installed   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / batch.py _is_unclaimed_top_level   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py _kept_module_plans   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py plan_module_families   100.00% 16 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / batch.py _creation_refusal   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / batch.py creation_name_refusals   100.00% 15 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / batch.py _flat_expansion_refusals   100.00% 0 0 13   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py _selection_pks   100.00% 7 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / batch.py _reaches   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py _selected   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py execute_module_families   100.00% 6 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / batch.py _apply_module   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / batch.py apply_rule_to_modules   100.00% 13 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / batch.py (no function)   100.00% 49 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / capabilities.py supports_channelization   100.00% 4 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / capabilities.py supports_module_moves   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / capabilities.py (no function)   100.00% 7 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / claims.py TemplateClaim.__post_init__   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / claims.py resolve_template_claims   100.00% 13 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / claims.py _covering   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / claims.py _index_claims   100.00% 11 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / claims.py (no function)   100.00% 8 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py conversion_offered   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _conversion_plan   100.00% 0 0 25   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _family_rows   100.00% 0 0 9   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py plan_module_conversions   100.00% 0 0 28   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _planned_families   100.00% 0 0 12   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _outcome   100.00% 0 0 8   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _refused   100.00% 0 0 22   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _locked_family   100.00% 0 0 10   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _is_stale   100.00% 0 0 3   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _blocking_reason   100.00% 0 0 20   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _carry_assignments   100.00% 0 0 19   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _split_base   100.00% 0 0 47   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _rewrite   100.00% 0 0 18   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _convert   100.00% 0 0 23   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _dry_run   100.00% 0 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py execute_conversion   100.00% 0 0 10   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py preview_rule_conversions   50.00% 2 1 1   100.00% 0 0   50.00%
netbox_interface_name_rules / family / conversion.py _preview   100.00% 0 0 9   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py convert_rule_families   100.00% 0 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py _convert_families   100.00% 0 0 10   100.00% 0 0   100.00%
netbox_interface_name_rules / family / conversion.py (no function)   100.00% 23 0 21   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py InterfaceSnapshot.from_interface   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py InstalledFamilyPlan.member_pks   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py InstalledFamilyPlanSet.member_pks   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py StructuralFamilyPlan.topology   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py StructuralFamilyPlan.channel_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py StructuralFamilyPlan.target_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py StructuralFamilyPlan.holders   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py FlatCreationPlan.topology   0.00% 1 1 0   100.00% 0 0   0.00%
netbox_interface_name_rules / family / domain.py FlatCreationPlan.member_pks   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ProspectiveFamilyPlan.source_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ProspectiveFamilyPlan.target_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ProspectiveFamilyPlanSet.predicted_names   100.00% 7 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / domain.py FamilyOutcome.changed_count   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py InstalledPlanSetOutcome.changed_count   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.topology   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.channel_count   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.member_pks   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.current_names   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.sibling_target_names   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.missing_names   100.00% 0 0 3   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionPlan.target_names   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.convertible   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.status_label   100.00% 0 0 6   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.current_name   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.current_names   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.new_names   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.name_details   100.00% 0 0 8   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py ConversionCandidate.metadata_note   100.00% 0 0 7   100.00% 0 0   100.00%
netbox_interface_name_rules / family / domain.py (no function)   100.00% 92 0 87   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _lock_family   100.00% 4 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _is_stale   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _member_outcome   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _blocked_member   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _rename_member   100.00% 27 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / execution.py _family_status   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / execution.py _preserve_names_across_parent_cascade   100.00% 0 0 20   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _execute_channelized_members   100.00% 0 0 20   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _execute_members   100.00% 2 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py _stale_outcome   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / execution.py execute_installed_plan   100.00% 11 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / execution.py execute_installed_plan_set   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / execution.py (no function)   100.00% 21 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py is_plain_interface   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py is_channelized_parent   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py _is_channel   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py _flat_plan   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py _claimed_flat_plan   100.00% 12 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / installed.py _channelized_plan   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py _module_family_targets   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py _channelized_plans   100.00% 15 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / installed.py interfaces_by_module   85.71% 7 1 0   75.00% 4 1   81.82%
netbox_interface_name_rules / family / installed.py device_interface_families   100.00% 7 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / installed.py plan_kept_interface   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py _interface_rename_plan   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / installed.py plan_interface_rename   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py plan_device_interface_rename   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / installed.py module_raw_bases   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py given_raw_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py plan_installed_flat_families   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / installed.py half_built_members   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / installed.py plan_installed_families   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py plan_installed_families_from   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / installed.py (no function)   100.00% 26 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py name_owners   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py first_taken_name   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py name_holders   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py _owner_refusal   100.00% 9 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / names.py belongs_elsewhere   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py channel_holder_refusal   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / names.py channelized_name_refusal   100.00% 11 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / family / names.py repeated_names   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py repeated_name_refusal   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py validate_or_block   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py name_is_taken   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py is_name_collision   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py restore_deferred_channel_names   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / names.py _restore_channel_names   96.00% 25 1 0   87.50% 8 1   93.94%
netbox_interface_name_rules / family / names.py reconcile_after_parent_cascade   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / names.py (no function)   100.00% 26 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / previous.py _names_given_by   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / previous.py names_the_previous_rule_gave   100.00% 6 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / previous.py (no function)   100.00% 9 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py describe_interfaces   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py describe_template_interfaces   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / prospective.py describe_module_interfaces   100.00% 2 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _partition   100.00% 7 0 2   100.00% 2 0   100.00%
netbox_interface_name_rules / family / prospective.py _is_family_root   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / prospective.py _rename_plan   100.00% 0 0 31   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _refused_creation   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _unclaimed   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _simple_plan   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / prospective.py _flat_creation_plan   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / prospective.py _modelled_structural_plan   100.00% 0 0 22   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _structural_plan   100.00% 2 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _plain_plan   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / prospective.py _creation_context   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _TemplateSuffixes.__init__   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _TemplateSuffixes.get   100.00% 0 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _plain_base   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py plan_prospective_families   100.00% 7 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _is_structural_creation   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py _settled_creations   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / prospective.py _settled_creation   100.00% 0 0 15   100.00% 0 0   100.00%
netbox_interface_name_rules / family / prospective.py (no function)   100.00% 37 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py rule_reads_base   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py _renaming_template   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / raw_bases.py _parent_name_needs_channels   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py _marked_evaluation   100.00% 8 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / raw_bases.py _renamed_pattern   100.00% 14 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / raw_bases.py _channel_patterns   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py _template_forms   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.__init__   100.00% 14 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.base_for   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.builds_on   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.claims_alone   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.is_ambiguous   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.claim   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases.flat_families   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._resolved   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._claim   100.00% 19 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._single_names   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._raw_forms   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._is_raw_name   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._flat_families   100.00% 15 0 0   100.00% 10 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._flat_family   100.00% 6 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._previous_template_forms   100.00% 7 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._matches   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py RawBases._is_renamed   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / raw_bases.py GivenRawNames.__init__   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py GivenRawNames.base_for   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py GivenRawNames.claims_alone   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / raw_bases.py (no function)   100.00% 46 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _flat_expansion   100.00% 0 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py has_flat_expansion   100.00% 0 0 10   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py taken_over_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py flat_surplus   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _plan   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _modelled_plan   100.00% 0 0 23   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py plan_structural_family   100.00% 2 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py module_taken_over_names   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _without_holders   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _settled   100.00% 0 0 12   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py settle_module_families   100.00% 0 0 19   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _outcome   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _refused   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _locked_rows   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _stale_reason   100.00% 0 0 12   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _name_refusal   100.00% 0 0 21   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _first_taken_name   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _channel_row   100.00% 0 0 18   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _create_channels   100.00% 0 0 15   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _create_family   100.00% 0 0 24   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _install_family   100.00% 0 0 18   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py execute_structural_family   100.00% 4 0 1   100.00% 2 0   100.00%
netbox_interface_name_rules / family / structural.py execute_module_structural_families   100.00% 0 0 16   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _flat_creation_plan   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py plan_flat_family   100.00% 13 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / structural.py _flat_outcome   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _flat_refused   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _locked_flat_rows   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _is_flat_stale   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / structural.py _build_flat_family   100.00% 19 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / structural.py _install_flat_family   100.00% 17 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / structural.py execute_flat_family   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / structural.py (no function)   100.00% 37 0 14   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py child_name_suffix   100.00% 0 0 12   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py template_channel_suffixes   100.00% 0 0 16   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py breaks_out   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py builds_channelized_family   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py builds_flat_family   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py names_installed_parent   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / targets.py used_parent_template   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py one_family_per_name_set   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / targets.py flat_family_names   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py channelized_family_names   100.00% 0 0 20   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py intended_family_names   66.67% 9 3 0   75.00% 4 1   69.23%
netbox_interface_name_rules / family / targets.py _simple_child_target   100.00% 0 0 9   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py _failed   100.00% 0 0 8   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py _unclaimed   100.00% 0 0 7   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py _breakout_targets   100.00% 0 0 34   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py lockstep_family_targets   100.00% 0 0 14   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py channelized_family_targets   100.00% 0 0 12   100.00% 0 0   100.00%
netbox_interface_name_rules / family / targets.py (no function)   100.00% 18 0 11   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py ResolvedTemplateName.at_chassis_position   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / template_names.py _move_name   100.00% 0 0 10   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py _module_at_chassis_position   100.00% 0 0 11   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py vc_position_re   100.00% 4 0 1   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py _vc_position_alternatives   100.00% 0 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py _historical_pattern   100.00% 0 0 18   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py _historical_pattern.mark   100.00% 0 0 2   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py pinned_template_cache   100.00% 13 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / family / template_names.py module_with_bay_chain   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / template_names.py _interface_templates   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / template_names.py _resolve_template   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py resolve_templates   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py resolved_template_names   100.00% 8 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / family / template_names.py TemplateNames.__init__   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / family / template_names.py TemplateNames.get   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / family / template_names.py (no function)   100.00% 28 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / filters.py InterfaceNameRuleFilterSet.search   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / filters.py (no function)   100.00% 21 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / forms.py RuleTestForm.clean   100.00% 23 0 0   100.00% 16 0   100.00%
netbox_interface_name_rules / forms.py RuleTestForm._clean_pattern   100.00% 6 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / forms.py RuleTestForm._clean_rule   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / forms.py RuleTestForm.clean_breakout_mode   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / forms.py RuleTestForm.clean_channel_count   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / forms.py RuleTestForm.clean_channel_start   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / forms.py InterfaceNameRuleBulkEditForm.clean   94.12% 17 1 0   90.00% 10 1   92.59%
netbox_interface_name_rules / forms.py (no function)   100.00% 83 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / graphql / __init__.py (no function)   100.00% 0 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / graphql / filters.py (no function)   100.00% 7 0 28   100.00% 0 0   100.00%
netbox_interface_name_rules / graphql / schema.py (no function)   100.00% 9 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / graphql / types.py (no function)   100.00% 10 0 4   100.00% 0 0   100.00%
netbox_interface_name_rules / jobs.py rule_job_kwargs   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / jobs.py _run_under_request_processors   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / jobs.py run_as_job_user   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / jobs.py RuleJobRunner.__init__   66.67% 3 1 0   50.00% 2 1   60.00%
netbox_interface_name_rules / jobs.py RuleJobRunner.run   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / jobs.py RuleJobRunner._run_on_rule_id   100.00% 11 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / jobs.py RuleJobRunner.run_on_rule   100.00% 0 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / jobs.py ApplyRuleJob.run_on_rule   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / jobs.py ConvertFlatFamiliesJob.run_on_rule   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / jobs.py (no function)   100.00% 27 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / management / __init__.py (no function)   100.00% 0 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / management / commands / __init__.py (no function)   100.00% 0 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / management / commands / generate_template_variable_reference.py Command.handle   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / management / commands / generate_template_variable_reference.py (no function)   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py csv_export_entry   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.clean   100.00% 18 0 0   100.00% 16 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule._normalise_mode   100.00% 4 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule._rule_values   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule._loaded_fields   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.get_absolute_url   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.get_breakout_mode_color   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.specificity_score   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.specificity_label   100.00% 12 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.save   100.00% 25 0 0   100.00% 14 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.__str__   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.to_csv   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py InterfaceNameRule.to_yaml   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / models.py (no function)   100.00% 50 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py variables_for_context   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _identifiers   100.00% 7 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / name_template.py _reference_brace_fields   100.00% 9 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / name_template.py _braces_balanced   100.00% 9 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / name_template.py _evaluated_brace_fields   100.00% 16 0 0   100.00% 12 0   100.00%
netbox_interface_name_rules / name_template.py _parse_brace_groups   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _parse_expression   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _arithmetic_operands   100.00% 9 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / name_template.py _evaluate_arithmetic   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / name_template.py _is_format_field   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / name_template.py _substitute_tokens   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / name_template.py _substitute_tokens.substitute   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _group_tree   100.00% 8 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / name_template.py _evaluate_group   100.00% 6 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _group_shape_error   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / name_template.py variable_token   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py references_variable   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py referenced_variables   100.00% 18 0 0   100.00% 10 0   100.00%
netbox_interface_name_rules / name_template.py unavailable_variables   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py unavailable_reason   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _validate_breakout_topology   100.00% 10 0 0   100.00% 10 0   100.00%
netbox_interface_name_rules / name_template.py _template_errors   100.00% 6 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / name_template.py _token_groups   100.00% 13 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / name_template.py _text_arithmetic_errors   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / name_template.py _group_errors   100.00% 9 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / name_template.py _group_shape_refusal   100.00% 14 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / name_template.py validate_rule   100.00% 9 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / name_template.py log_refused_rules   100.00% 9 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / name_template.py evaluate_name_template   100.00% 16 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / name_template.py (no function)   100.00% 76 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py _extract_trailing_digits   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / naming.py numeric_suffix   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / naming.py _variable_position   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / naming.py _resolve_bay_position   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py bay_naming_values   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py _resolve_slot   100.00% 11 0 0   87.50% 8 1   94.74%
netbox_interface_name_rules / naming.py _filter_variables   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py _position_path   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py build_bay_chain_variables   100.00% 6 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / naming.py chassis_position   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / naming.py bay_chain   100.00% 6 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / naming.py bay_chain_variables   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py build_variables   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py build_device_interface_variables   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / naming.py (no function)   100.00% 19 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / navigation.py (no function)   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / regex_safety.py _error_detail   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / regex_safety.py compile_module_type_pattern   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / regex_safety.py (no function)   100.00% 6 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_outcomes.py renamed_count   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_outcomes.py (no function)   100.00% 13 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py ModuleState.placement   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py ModuleState.retyped_from   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _bay_values   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _state_of   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _Trigger.__call__   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py ModuleTrigger.after_install   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py PlanRunner.__call__   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py reapply   100.00% 10 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / rename_triggers.py _module_roots   100.00% 7 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _earliest_naming   100.00% 8 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / rename_triggers.py _named_entry   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _state_when_named   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _moved_or_bay_changed   100.00% 4 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _journal_owner   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _reapply_from_naming   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _reapply_options   100.00% 9 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / rename_triggers.py _naming_points   100.00% 15 0 2   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _may_keep_a_name_of_a_move   100.00% 0 0 14   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _reads   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _reapply_module   100.00% 14 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _reapply_modules   100.00% 31 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / rename_triggers.py _reapply_device   100.00% 31 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _failure   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _journal_line   100.00% 6 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _report   100.00% 14 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _request_user   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _module_trigger   100.00% 10 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / rename_triggers.py _device_trigger   100.00% 5 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _bay_trigger   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _read_state   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _needs_subtree_naming   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _read_module   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py _read_device   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rename_triggers.py _read_bay   100.00% 10 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / rename_triggers.py _check_write_alias   100.00% 3 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py before_save   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rename_triggers.py before_save.forget   100.00% 2 0 0   50.00% 2 1   75.00%
netbox_interface_name_rules / rename_triggers.py after_save   100.00% 18 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / rename_triggers.py (no function)   100.00% 81 0 3   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py _empty_rule_cache   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py pinned_rule_cache   100.00% 11 0 0   66.67% 6 2   88.24%
netbox_interface_name_rules / rule_selection.py module_types_matching_pattern   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py _enabled_module_rules   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py parent_type_scopes_a_rule   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py compile_stored_pattern   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py _version_row_signature   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / rule_selection.py _enabled_rules_version   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py _get_enabled_rules   100.00% 21 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / rule_selection.py _scope_ids   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py _rule_scope_matches   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / rule_selection.py _build_candidates   100.00% 13 0 0   87.50% 8 1   95.24%
netbox_interface_name_rules / rule_selection.py _find_exact_match   100.00% 9 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / rule_selection.py _find_regex_match   100.00% 8 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / rule_selection.py find_matching_rule   100.00% 13 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / rule_selection.py (no function)   100.00% 35 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_module_pre_save   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_module_saved   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_module_bay_pre_save   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_module_bay_saved   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_device_pre_save   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_device_saved   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / signals.py on_librenms_predict_module_interface_names   88.89% 9 1 0   50.00% 2 1   81.82%
netbox_interface_name_rules / signals.py (no function)   95.83% 24 1 0   50.00% 2 1   92.31%
netbox_interface_name_rules / tables.py SpecificityColumn.__init__   100.00% 4 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / tables.py SpecificityColumn.render   100.00% 11 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / tables.py SpecificityColumn.value   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / tables.py (no function)   100.00% 32 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / template_variable_reference.py TemplateVariableReferenceRow.token   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / template_variable_reference.py TemplateVariableReferenceRow.context_values   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / template_variable_reference.py TemplateVariableReferenceRow.rule_type_label   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / template_variable_reference.py naming_context_reference   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / template_variable_reference.py _description   100.00% 6 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / template_variable_reference.py variable_reference_rows   100.00% 8 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / template_variable_reference.py rule_tester_variable_rows   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / template_variable_reference.py render_markdown_reference   100.00% 9 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / template_variable_reference.py regenerated_document   100.00% 7 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / template_variable_reference.py outdated_generated_regions   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / template_variable_reference.py write_generated_regions   100.00% 12 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / template_variable_reference.py (no function)   100.00% 29 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / transactions.py write_alias   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / transactions.py write_scope   100.00% 17 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / transactions.py _lock_timeout   100.00% 11 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / transactions.py _restore_lock_timeouts   100.00% 12 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / transactions.py _discard   100.00% 5 0 0   50.00% 2 1   85.71%
netbox_interface_name_rules / transactions.py _CommitJoin.__init__   100.00% 3 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / transactions.py _CommitJoin.acknowledge   100.00% 5 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / transactions.py on_commit   100.00% 9 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / transactions.py Block.set_rollback   100.00% 2 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / transactions.py atomic_with_events   100.00% 23 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / transactions.py _point_at_saved_rows   92.31% 13 1 0   90.00% 10 1   91.30%
netbox_interface_name_rules / transactions.py _keep   100.00% 12 0 0   100.00% 8 0   100.00%
netbox_interface_name_rules / transactions.py (no function)   100.00% 29 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / urls.py (no function)   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py _failure_text   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py InterfaceNameRuleListView.get_extra_context   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py InterfaceNameRuleListView.export_yaml   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py _submitted   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py ZeroMatchPatternWarningMixin.post   100.00% 8 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / views.py ZeroMatchPatternWarningMixin._warn_if_pattern_matches_nothing   80.00% 10 2 0   100.00% 4 0   85.71%
netbox_interface_name_rules / views.py InterfaceNameRuleDuplicateView.get   100.00% 5 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleTestView.get_required_permission   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleTestView.get   100.00% 13 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / views.py RuleTestView.post   100.00% 15 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._variable_reference   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._find_existing_rule   100.00% 13 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._handle_save_rule   100.00% 22 0 0   100.00% 12 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._evaluate_template_preview   100.00% 23 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._evaluate_template_preview.row   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._template_preview_variables   100.00% 9 0 0   100.00% 2 0   100.00%
netbox_interface_name_rules / views.py RuleTestView._fetch_db_preview   100.00% 20 0 0   100.00% 4 0   100.00%
netbox_interface_name_rules / views.py RuleApplyListView.get_required_permission   100.00% 1 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleApplyListView.get   100.00% 2 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleApplicableView.get   62.50% 8 3 0   100.00% 0 0   62.50%
netbox_interface_name_rules / views.py RuleApplyDetailView.get   88.00% 25 3 0   100.00% 0 0   88.00%
netbox_interface_name_rules / views.py RuleApplyDetailView._enqueue   100.00% 8 0 0   100.00% 0 0   100.00%
netbox_interface_name_rules / views.py RuleApplyDetailView._convert   100.00% 19 0 0   100.00% 6 0   100.00%
netbox_interface_name_rules / views.py RuleApplyDetailView.post   100.00% 25 0 0   100.00% 10 0   100.00%
netbox_interface_name_rules / views.py RuleToggleView.post   83.33% 18 3 0   62.50% 8 1   76.92%
netbox_interface_name_rules / views.py (no function)   96.58% 117 4 0   50.00% 2 1   95.80%
Total     99.25% 3587 27 1029   98.00% 902 16   99.00%

No items found using the specified filter.