Coverage report: 98%

Files Functions Classes

coverage.py v7.15.4, created at 2026-08-22 21:16 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/__init__.py InterfaceNameRulesConfig.ready   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/__init__.py (no function)   100% 16 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/api/serializers.py InterfaceNameRuleSerializer.validate   100% 9 0 10   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/api/serializers.py (no function)   100% 9 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/api/urls.py (no function)   100% 6 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/api/views.py (no function)   100% 6 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/choices.py (no function)   100% 5 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py pinned_rule_cache   100% 11 0 0   67% 6 2   88%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _compile_pattern   100% 4 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _version_row_signature   100% 10 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _enabled_rules_version   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _get_enabled_rules   100% 20 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _get_parent_module_type   100% 5 0 0   75% 4 1   89%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py supports_channelization   100% 6 0 1   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _vc_position_re   100% 4 0 1   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py supports_vc_position_token   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _is_channel_child   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _is_channelized_parent   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _partition_families   100% 7 0 3   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _child_name_suffix   100% 0 0 12   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _unambiguous_claims   100% 0 0 34   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _drifted_candidates   100% 0 0 7   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _forced_channel_bases   93% 14 1 2   83% 6 1   90%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _collect_unrenamed   100% 7 0 2   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py apply_interface_name_rules   100% 35 0 3   100% 12 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _predicted_channel_name   100% 0 0 11   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _predicted_family_parent_name   100% 0 0 10   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _predicted_names   100% 7 0 8   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py predict_rule_output   100% 15 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _try_rename_device_interface   100% 37 0 0   100% 10 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _try_rename_device_family   100% 5 0 6   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py apply_device_interface_rules   100% 24 0 0   100% 12 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _module_with_bay_chain   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _vc_position_alternatives   100% 0 0 8   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _raw_name_pattern   100% 0 0 19   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _raw_name_pattern._mark   100% 0 0 2   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _raw_matchers   100% 9 0 1   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _raw_name_matchers   100% 4 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _get_raw_interface_names   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _raw_name_patterns   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _raw_names_by_module   100% 0 0 12   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _template_families   100% 2 0 1   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _resolve_template_families   100% 0 0 23   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _template_channel_suffixes   100% 0 0 14   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _recovered_suffix   100% 0 0 17   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _child_target_names   100% 3 0 7   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _flag_rule_potentially_deprecated   100% 7 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _scope_ids   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _rule_scope_matches   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _build_candidates   100% 13 0 0   88% 8 1   95%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _find_exact_match   100% 9 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _find_regex_match   100% 8 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py find_matching_rule   100% 13 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _extract_trailing_digits   100% 4 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _resolve_bay_position   100% 7 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _resolve_slot   70% 10 3 0   62% 8 1   67%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py build_variables   100% 9 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _name_exists_on_device   100% 5 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _record_skip   100% 2 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _record_conflict   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _rename_in_place   100% 9 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _rename_for_family   100% 0 0 17   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _restore_deferred_channel_names   100% 0 0 32   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _preserve_names_across_parent_cascade   100% 0 0 19   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _rename_channel_children   100% 0 0 12   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_simple_rule_to_family   100% 0 0 13   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _rename_family_parent   100% 0 0 9   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_breakout_rule_to_family   100% 0 0 49   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _is_channelized_rule   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _channelized_family_names   100% 0 0 20   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _has_flat_expansion   100% 0 0 10   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _first_taken_name   100% 0 0 5   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _build_channelized_family   100% 0 0 61   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_channelized_rule   100% 3 0 1   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_rule_with_family   100% 3 0 4   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _create_channel   100% 10 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_rule_to_interface   100% 13 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _find_channel_base   100% 13 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _matching_moduletype_pks   100% 6 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py has_applicable_interfaces   100% 5 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _build_module_qs   100% 11 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _name_detail   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _family_entry   100% 3 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _evaluate_plain_interface   100% 6 0 2   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _lockstep_details   100% 0 0 9   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _channelized_family_entry   100% 0 0 25   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _channelized_family_preview   100% 0 0 8   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _channelized_creation_entry   100% 2 0 3   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _channel_rule_entries   100% 6 0 3   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _channel_rule_entry   93% 14 1 0   83% 6 1   90%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _count_remaining_interfaces   100% 3 0 2   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _process_channel_module   100% 9 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _process_plain_module   100% 12 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py find_interfaces_for_rule   100% 18 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_channel_rule_to_module   100% 16 0 7   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_family   100% 5 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _apply_plain_rule_to_module   100% 7 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py apply_rule_to_existing   100% 20 0 0   100% 12 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _conversion_offered   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _base_marked_ch0_name   100% 0 0 20   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _recovered_bases   100% 0 0 23   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _family_on   100% 0 0 17   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _conversion_family   100% 0 0 19   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _conversion_families   100% 0 0 18   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _validate_or_block   100% 0 0 5   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _split_ch0_row   100% 0 0 45   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _rewrite_family   100% 0 0 46   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _convert_family   100% 0 0 14   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _conversion_metadata_note   100% 0 0 7   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _conversion_verdict   100% 0 0 16   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py find_convertible_families   100% 2 0 1   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _find_convertible_families   100% 0 0 7   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py convert_flat_families   100% 3 0 1   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py _convert_flat_families   100% 0 0 25   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py evaluate_name_template   100% 5 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py evaluate_name_template._eval_expr   100% 11 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/engine.py (no function)   100% 104 0 38   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/filters.py InterfaceNameRuleFilterSet.search   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/filters.py (no function)   100% 21 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/forms.py RuleTestForm.clean   100% 20 0 0   100% 10 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/forms.py RuleTestForm._clean_breakout_topology   100% 6 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/forms.py RuleTestForm.clean_breakout_mode   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/forms.py RuleTestForm.clean_channel_count   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/forms.py RuleTestForm.clean_channel_start   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/forms.py (no function)   100% 73 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/graphql/filters.py (no function)   100% 7 0 28   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/graphql/schema.py (no function)   100% 9 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/graphql/types.py (no function)   100% 14 0 4   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/jobs.py ApplyRuleJob.run   95% 20 1 0   75% 4 1   92%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/jobs.py ConvertFlatFamiliesJob.run   95% 20 1 0   75% 4 1   92%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/jobs.py (no function)   100% 9 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py _expression_names_channel   100% 5 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py _references_channel   100% 7 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py _has_unbalanced_braces   100% 9 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py _validate_module_type_pattern   100% 6 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py _validate_breakout_topology   100% 15 0 0   100% 16 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.clean   100% 17 0 0   100% 14 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.get_absolute_url   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.get_breakout_mode_color   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.specificity_score   100% 4 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.specificity_label   100% 12 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.__str__   100% 7 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.to_csv   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py InterfaceNameRule.to_yaml   100% 6 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/models.py (no function)   100% 47 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/navigation.py (no function)   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py on_module_pre_save   100% 9 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py on_module_saved   100% 16 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py _apply_rules_deferred   100% 13 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py on_device_pre_save   100% 12 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py on_device_saved   100% 15 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py _apply_rules_for_device_deferred   100% 29 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py on_librenms_predict_module_interface_names   89% 9 1 0   50% 2 1   82%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/signals.py (no function)   96% 23 1 0   50% 2 1   92%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/tables.py SpecificityColumn.__init__   100% 4 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/tables.py SpecificityColumn.render   100% 11 0 0   100% 8 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/tables.py SpecificityColumn.value   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/tables.py (no function)   100% 32 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/urls.py (no function)   100% 5 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py InterfaceNameRuleListView.export_yaml   100% 8 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py InterfaceNameRuleDuplicateView.get   100% 5 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView.get_required_permission   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView.get   100% 13 0 0   100% 4 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView.post   100% 15 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView._find_existing_rule   100% 11 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView._handle_save_rule   100% 22 0 0   92% 12 1   97%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView._evaluate_template_preview   100% 21 0 0   100% 6 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView._evaluate_template_preview.row   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleTestView._fetch_db_preview   100% 18 0 0   100% 2 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplyListView.get_required_permission   100% 1 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplyListView.get   100% 2 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplicableView.get   62% 8 3 0   100% 0 0   62%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplyDetailView.get   87% 23 3 0   100% 0 0   87%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplyDetailView._enqueue   100% 6 0 0   100% 0 0   100%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplyDetailView._convert   94% 18 1 0   83% 6 1   92%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleApplyDetailView.post   96% 25 1 0   90% 10 1   94%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py RuleToggleView.post   80% 15 3 0   62% 8 1   74%
/home/runner/work/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox-InterfaceNameRules-plugin/netbox_interface_name_rules/views.py (no function)   96% 111 4 0   50% 2 1   96%
Total     98% 1551 24 859   95% 400 16   98%

No items found using the specified filter.