Coverage report: 59%

Files Functions Classes

coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
account/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
account/models.py UserToken.get_absolute_url   0% 1 1 0   100% 0 0   0%
account/models.py (no function)   100% 8 0 0   100% 0 0   100%
account/urls.py (no function)   100% 5 0 0   100% 0 0   100%
account/views.py LoginView.dispatch   100% 1 0 0   100% 0 0   100%
account/views.py LoginView.gen_auth_data   0% 8 8 0   0% 4 0   0%
account/views.py LoginView.get_auth_backends   31% 16 11 0   12% 8 1   25%
account/views.py LoginView.get   67% 6 2 0   50% 2 1   62%
account/views.py LoginView.post   0% 20 20 0   0% 8 0   0%
account/views.py LoginView.redirect_to_next   0% 8 8 0   0% 4 0   0%
account/views.py LogoutView.get   0% 9 9 0   100% 0 0   0%
account/views.py SocialAuthBeginView.dispatch   0% 1 1 0   100% 0 0   0%
account/views.py SocialAuthBeginView.post   0% 7 7 0   0% 6 0   0%
account/views.py ProfileView.get   0% 5 5 0   100% 0 0   0%
account/views.py UserConfigView.get   0% 3 3 0   100% 0 0   0%
account/views.py UserConfigView.post   0% 11 11 0   0% 4 0   0%
account/views.py ChangePasswordView.get   0% 5 5 0   0% 2 0   0%
account/views.py ChangePasswordView.post   0% 7 7 0   0% 2 0   0%
account/views.py BookmarkListView.get_queryset   0% 1 1 0   100% 0 0   0%
account/views.py BookmarkListView.get_extra_context   0% 1 1 0   100% 0 0   0%
account/views.py NotificationListView.get_queryset   0% 1 1 0   100% 0 0   0%
account/views.py NotificationListView.get_extra_context   0% 1 1 0   100% 0 0   0%
account/views.py SubscriptionListView.get_queryset   0% 1 1 0   100% 0 0   0%
account/views.py SubscriptionListView.get_extra_context   0% 1 1 0   100% 0 0   0%
account/views.py UserTokenListView.get   0% 5 5 0   100% 0 0   0%
account/views.py UserTokenView.get   0% 4 4 0   100% 0 0   0%
account/views.py UserTokenEditView.alter_object   0% 4 4 0   0% 2 0   0%
account/views.py (no function)   100% 95 0 0   100% 0 0   100%
circuits/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
circuits/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
circuits/api/serializers.py (no function)   100% 2 0 0   100% 0 0   100%
circuits/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
circuits/api/serializers_/circuits.py (no function)   100% 95 0 0   100% 0 0   100%
circuits/api/serializers_/nested.py (no function)   100% 7 0 0   100% 0 0   100%
circuits/api/serializers_/providers.py (no function)   100% 29 0 0   100% 0 0   100%
circuits/api/urls.py (no function)   100% 17 0 0   100% 0 0   100%
circuits/api/views.py CircuitsRootView.get_view_name   0% 1 1 0   100% 0 0   0%
circuits/api/views.py (no function)   100% 52 0 0   100% 0 0   100%
circuits/apps.py CircuitsConfig.ready   100% 3 0 0   100% 0 0   100%
circuits/apps.py (no function)   100% 5 0 0   100% 0 0   100%
circuits/choices.py (no function)   100% 33 0 0   100% 0 0   100%
circuits/constants.py (no function)   100% 3 0 0   100% 0 0   100%
circuits/filtersets.py ProviderFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py ProviderAccountFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py ProviderNetworkFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py CircuitFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py CircuitTerminationFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py CircuitGroupAssignmentFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py CircuitGroupAssignmentFilterSet.filter_circuit   0% 4 4 0   0% 2 0   0%
circuits/filtersets.py CircuitGroupAssignmentFilterSet.filter_virtual_circuit   0% 4 4 0   0% 2 0   0%
circuits/filtersets.py CircuitGroupAssignmentFilterSet.filter_provider   0% 6 6 0   0% 2 0   0%
circuits/filtersets.py VirtualCircuitFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py VirtualCircuitTerminationFilterSet.search   0% 3 3 0   0% 2 0   0%
circuits/filtersets.py (no function)   100% 151 0 0   100% 0 0   100%
circuits/forms/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
circuits/forms/bulk_edit.py (no function)   100% 89 0 0   100% 0 0   100%
circuits/forms/bulk_import.py (no function)   100% 92 0 0   100% 0 0   100%
circuits/forms/filtersets.py (no function)   100% 105 0 0   100% 0 0   100%
circuits/forms/model_forms.py ProviderForm.__init__   0% 10 10 0   0% 4 0   0%
circuits/forms/model_forms.py (no function)   100% 98 0 0   100% 0 0   100%
circuits/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
circuits/graphql/enums.py (no function)   100% 7 0 0   100% 0 0   100%
circuits/graphql/filter_mixins.py (no function)   91% 11 1 0   50% 2 1   85%
circuits/graphql/filters.py (no function)   95% 102 5 0   50% 2 1   94%
circuits/graphql/schema.py (no function)   100% 27 0 0   100% 0 0   100%
circuits/graphql/types.py CircuitTerminationType.termination   0% 1 1 0   100% 0 0   0%
circuits/graphql/types.py CircuitGroupAssignmentType.member   0% 1 1 0   100% 0 0   0%
circuits/graphql/types.py (no function)   96% 45 2 0   50% 2 1   94%
circuits/models/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
circuits/models/base.py (no function)   100% 8 0 0   100% 0 0   100%
circuits/models/circuits.py Circuit.__str__   0% 1 1 0   100% 0 0   0%
circuits/models/circuits.py Circuit.get_status_color   0% 1 1 0   100% 0 0   0%
circuits/models/circuits.py Circuit.clean   0% 3 3 0   0% 2 0   0%
circuits/models/circuits.py CircuitGroup.__str__   100% 1 0 0   100% 0 0   100%
circuits/models/circuits.py CircuitGroupAssignment.__str__   0% 3 3 0   0% 2 0   0%
circuits/models/circuits.py CircuitGroupAssignment.get_absolute_url   0% 1 1 0   100% 0 0   0%
circuits/models/circuits.py CircuitTermination.__init__   0% 3 3 0   100% 0 0   0%
circuits/models/circuits.py CircuitTermination.__str__   0% 1 1 0   100% 0 0   0%
circuits/models/circuits.py CircuitTermination.get_absolute_url   0% 1 1 0   100% 0 0   0%
circuits/models/circuits.py CircuitTermination.clean   0% 6 6 0   0% 4 0   0%
circuits/models/circuits.py CircuitTermination.save   0% 17 17 0   0% 6 0   0%
circuits/models/circuits.py CircuitTermination.cache_related_objects   0% 18 18 0   0% 12 0   0%
circuits/models/circuits.py CircuitTermination.to_objectchange   0% 3 3 0   100% 0 0   0%
circuits/models/circuits.py CircuitTermination.parent_object   0% 1 1 0   100% 0 0   0%
circuits/models/circuits.py CircuitTermination.get_peer_termination   0% 5 5 0   100% 0 0   0%
circuits/models/circuits.py (no function)   100% 99 0 0   100% 0 0   100%
circuits/models/providers.py Provider.__str__   0% 1 1 0   100% 0 0   0%
circuits/models/providers.py ProviderAccount.__str__   0% 3 3 0   0% 2 0   0%
circuits/models/providers.py ProviderNetwork.__str__   0% 1 1 0   100% 0 0   0%
circuits/models/providers.py (no function)   100% 37 0 0   100% 0 0   100%
circuits/models/virtual_circuits.py VirtualCircuit.__str__   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuit.get_status_color   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuit.clean   0% 3 3 0   0% 2 0   0%
circuits/models/virtual_circuits.py VirtualCircuit.provider   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.__str__   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.get_absolute_url   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.get_role_color   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.to_objectchange   0% 3 3 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.parent_object   0% 1 1 0   100% 0 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.peer_terminations   0% 7 7 0   0% 6 0   0%
circuits/models/virtual_circuits.py VirtualCircuitTermination.clean   0% 3 3 0   0% 2 0   0%
circuits/models/virtual_circuits.py (no function)   100% 56 0 0   100% 0 0   100%
circuits/search.py (no function)   100% 52 0 0   100% 0 0   100%
circuits/signals.py rebuild_cablepaths   0% 4 4 0   0% 4 0   0%
circuits/signals.py (no function)   100% 6 0 0   100% 0 0   100%
circuits/tables/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
circuits/tables/circuits.py (no function)   100% 67 0 0   100% 0 0   100%
circuits/tables/columns.py CommitRateColumn.__init__   100% 1 0 0   100% 0 0   100%
circuits/tables/columns.py CommitRateColumn.value   0% 1 1 0   100% 0 0   0%
circuits/tables/columns.py (no function)   100% 6 0 0   100% 0 0   100%
circuits/tables/providers.py (no function)   100% 37 0 0   100% 0 0   100%
circuits/tables/virtual_circuits.py (no function)   100% 40 0 0   100% 0 0   100%
circuits/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
circuits/ui/panels.py CircuitCircuitTerminationPanel.__init__   100% 2 0 0   100% 0 0   100%
circuits/ui/panels.py CircuitCircuitTerminationPanel._get_termination_nodes   0% 10 10 0   0% 6 0   0%
circuits/ui/panels.py CircuitCircuitTerminationPanel.get_context   0% 2 2 0   100% 0 0   0%
circuits/ui/panels.py CircuitGroupAssignmentsPanel.__init__   100% 1 0 0   100% 0 0   100%
circuits/ui/panels.py (no function)   100% 83 0 0   100% 0 0   100%
circuits/urls.py (no function)   100% 5 0 0   100% 0 0   100%
circuits/views.py ProviderView.get_extra_context   0% 1 1 0   100% 0 0   0%
circuits/views.py ProviderAccountView.get_extra_context   0% 1 1 0   100% 0 0   0%
circuits/views.py ProviderNetworkView.get_extra_context   0% 1 1 0   100% 0 0   0%
circuits/views.py CircuitTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
circuits/views.py CircuitBulkImportView.prep_related_object_data   0% 2 2 0   100% 0 0   0%
circuits/views.py CircuitGroupView.get_extra_context   0% 1 1 0   100% 0 0   0%
circuits/views.py VirtualCircuitTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
circuits/views.py VirtualCircuitBulkImportView.prep_related_object_data   0% 2 2 0   100% 0 0   0%
circuits/views.py (no function)   100% 430 0 0   100% 0 0   100%
core/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/api/schema.py NetBoxDjangoFilterExtension._get_model_field   86% 7 1 0   75% 4 1   82%
core/api/schema.py FixTimeZoneSerializerField.map_serializer_field   100% 1 0 0   100% 0 0   100%
core/api/schema.py ChoiceFieldFix.map_serializer_field   88% 8 1 0   75% 4 1   83%
core/api/schema.py viewset_handles_bulk_create   100% 1 0 0   100% 0 0   100%
core/api/schema.py NetBoxAutoSchema.is_bulk_action   100% 3 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema.get_operation_id   75% 12 3 0   62% 8 3   70%
core/api/schema.py NetBoxAutoSchema.get_request_serializer   88% 16 2 0   75% 12 3   82%
core/api/schema.py NetBoxAutoSchema.get_response_serializers   100% 4 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema._get_bulk_error_responses   100% 9 0 0   100% 6 0   100%
core/api/schema.py NetBoxAutoSchema._get_response_bodies   100% 5 0 0   75% 4 1   89%
core/api/schema.py NetBoxAutoSchema._get_request_for_media_type   100% 4 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema._get_serializer_name   100% 4 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema.get_serializer_ref_name   88% 8 1 0   50% 4 2   75%
core/api/schema.py NetBoxAutoSchema._rebuilds_as_writable   73% 11 3 0   75% 4 1   73%
core/api/schema.py NetBoxAutoSchema.get_writable_class   100% 25 0 0   94% 16 1   98%
core/api/schema.py NetBoxAutoSchema.get_override_parameters   100% 4 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema.get_filter_backends   100% 3 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema._get_paginator   100% 3 0 0   100% 2 0   100%
core/api/schema.py NetBoxAutoSchema._get_request_body   52% 21 10 0   42% 12 3   48%
core/api/schema.py NetBoxAutoSchema.get_description   100% 6 0 0   100% 4 0   100%
core/api/schema.py NetBoxAutoSchema._generate_description   100% 4 0 0   100% 2 0   100%
core/api/schema.py FixSerializedPKRelatedField.map_serializer_field   100% 5 0 0   100% 2 0   100%
core/api/schema.py FixIntegerRangeSerializerSchema.map_serializer   100% 1 0 0   100% 0 0   100%
core/api/schema.py FixWritableNestedSerializerAllowPK.map_serializer_field   100% 6 0 0   100% 4 0   100%
core/api/schema.py (no function)   100% 61 0 0   100% 0 0   100%
core/api/serializers.py (no function)   100% 5 0 0   100% 0 0   100%
core/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/api/serializers_/change_logging.py (no function)   100% 19 0 0   100% 0 0   100%
core/api/serializers_/data.py (no function)   100% 21 0 0   100% 0 0   100%
core/api/serializers_/jobs.py JobSerializer.get_object   25% 8 6 0   50% 2 1   30%
core/api/serializers_/jobs.py (no function)   100% 22 0 0   100% 0 0   100%
core/api/serializers_/object_types.py ObjectTypeSerializer.get_rest_api_endpoint   83% 6 1 0   50% 2 1   75%
core/api/serializers_/object_types.py ObjectTypeSerializer.get_description   67% 3 1 0   50% 2 1   60%
core/api/serializers_/object_types.py (no function)   100% 25 0 0   100% 0 0   100%
core/api/serializers_/tasks.py BackgroundTaskSerializer.get_args   100% 1 0 0   100% 0 0   100%
core/api/serializers_/tasks.py BackgroundTaskSerializer.get_kwargs   100% 1 0 0   100% 0 0   100%
core/api/serializers_/tasks.py BackgroundTaskSerializer.get_position   100% 1 0 0   100% 0 0   100%
core/api/serializers_/tasks.py BackgroundTaskSerializer.get_status   100% 1 0 0   100% 0 0   100%
core/api/serializers_/tasks.py BackgroundQueueSerializer.get_url   100% 1 0 0   100% 0 0   100%
core/api/serializers_/tasks.py BackgroundWorkerSerializer.get_state   0% 1 1 0   100% 0 0   0%
core/api/serializers_/tasks.py (no function)   100% 60 0 0   100% 0 0   100%
core/api/urls.py (no function)   100% 14 0 0   100% 0 0   100%
core/api/views.py CoreRootView.get_view_name   0% 1 1 0   100% 0 0   0%
core/api/views.py DataSourceViewSet.sync   17% 6 5 0   0% 2 0   12%
core/api/views.py ObjectChangeViewSet.get_queryset   100% 1 0 0   100% 0 0   100%
core/api/views.py ObjectTypeViewSet.initial   100% 2 0 0   100% 0 0   100%
core/api/views.py BaseRQViewSet.get_data   0% 1 1 0   100% 0 0   0%
core/api/views.py BaseRQViewSet.list   100% 5 0 0   100% 0 0   100%
core/api/views.py BaseRQViewSet.get_serializer   100% 3 0 0   100% 0 0   100%
core/api/views.py BaseRQViewSet.get_serializer_class   100% 1 0 0   100% 0 0   100%
core/api/views.py BaseRQViewSet.get_serializer_context   100% 1 0 0   100% 0 0   100%
core/api/views.py BackgroundQueueViewSet.get_view_name   100% 1 0 0   100% 0 0   100%
core/api/views.py BackgroundQueueViewSet.get_data   100% 1 0 0   100% 0 0   100%
core/api/views.py BackgroundQueueViewSet.retrieve   62% 8 3 0   67% 6 2   64%
core/api/views.py BackgroundWorkerViewSet.get_view_name   100% 1 0 0   100% 0 0   100%
core/api/views.py BackgroundWorkerViewSet.get_data   100% 2 0 0   100% 0 0   100%
core/api/views.py BackgroundWorkerViewSet.retrieve   71% 7 2 0   50% 2 1   67%
core/api/views.py BackgroundTaskViewSet.get_view_name   100% 1 0 0   100% 0 0   100%
core/api/views.py BackgroundTaskViewSet.get_data   100% 1 0 0   100% 0 0   100%
core/api/views.py BackgroundTaskViewSet.get_task_from_id   40% 5 3 0   0% 2 0   29%
core/api/views.py BackgroundTaskViewSet.retrieve   33% 3 2 0   100% 0 0   33%
core/api/views.py BackgroundTaskViewSet.delete   50% 2 1 0   100% 0 0   50%
core/api/views.py BackgroundTaskViewSet.requeue   50% 2 1 0   100% 0 0   50%
core/api/views.py BackgroundTaskViewSet.enqueue   50% 2 1 0   100% 0 0   50%
core/api/views.py BackgroundTaskViewSet.stop   25% 4 3 0   0% 2 0   17%
core/api/views.py (no function)   100% 97 0 0   100% 0 0   100%
core/apps.py CoreConfig.ready   79% 19 4 0   50% 2 1   76%
core/apps.py (no function)   100% 17 0 0   100% 0 0   100%
core/checks.py check_duplicate_indexes   70% 10 3 0   50% 8 2   61%
core/checks.py check_postgresql_version   45% 31 17 0   60% 10 4   49%
core/checks.py check_redis_version   67% 9 3 0   50% 2 1   64%
core/checks.py (no function)   100% 17 0 0   100% 0 0   100%
core/choices.py (no function)   100% 39 0 0   100% 0 0   100%
core/constants.py (no function)   100% 8 0 0   100% 0 0   100%
core/data_backends.py url_has_embedded_credentials   0% 2 2 0   100% 0 0   0%
core/data_backends.py LocalBackend.fetch   0% 3 3 0   100% 0 0   0%
core/data_backends.py GitBackend.init_config   0% 12 12 0   0% 8 0   0%
core/data_backends.py GitBackend.fetch   0% 18 18 0   0% 8 0   0%
core/data_backends.py S3Backend.init_config   0% 2 2 0   100% 0 0   0%
core/data_backends.py S3Backend.fetch   0% 14 14 0   0% 2 0   0%
core/data_backends.py S3Backend._resolve_local_path   0% 5 5 0   0% 2 0   0%
core/data_backends.py S3Backend._region_name   0% 4 4 0   0% 2 0   0%
core/data_backends.py S3Backend._bucket_name   0% 2 2 0   100% 0 0   0%
core/data_backends.py S3Backend._endpoint_url   0% 2 2 0   100% 0 0   0%
core/data_backends.py S3Backend._remote_path   0% 4 4 0   0% 2 0   0%
core/data_backends.py (no function)   100% 54 0 0   100% 0 0   100%
core/dataclasses.py JobLogEntry.from_logrecord   0% 1 1 0   100% 0 0   0%
core/dataclasses.py (no function)   100% 10 0 0   100% 0 0   100%
core/events.py (no function)   100% 8 0 0   100% 0 0   100%
core/exceptions.py (no function)   100% 8 0 0   100% 0 0   100%
core/filtersets.py DataSourceFilterSet.search   0% 3 3 0   0% 2 0   0%
core/filtersets.py DataFileFilterSet.search   0% 3 3 0   0% 2 0   0%
core/filtersets.py JobFilterSet.search   0% 3 3 0   0% 2 0   0%
core/filtersets.py ObjectTypeFilterSet.search   67% 3 1 0   50% 2 1   60%
core/filtersets.py ObjectTypeFilterSet.filter_features   100% 1 0 0   100% 0 0   100%
core/filtersets.py ObjectChangeFilterSet.search   0% 3 3 0   0% 2 0   0%
core/filtersets.py ConfigRevisionFilterSet.search   0% 3 3 0   0% 2 0   0%
core/filtersets.py (no function)   100% 88 0 0   100% 0 0   100%
core/forms/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
core/forms/bulk_edit.py (no function)   100% 19 0 0   100% 0 0   100%
core/forms/bulk_import.py (no function)   100% 7 0 0   100% 0 0   100%
core/forms/filtersets.py (no function)   100% 53 0 0   100% 0 0   100%
core/forms/mixins.py (no function)   100% 8 0 0   100% 0 0   100%
core/forms/model_forms.py DataSourceForm.fieldsets   0% 4 4 0   0% 2 0   0%
core/forms/model_forms.py DataSourceForm.__init__   0% 11 11 0   0% 6 0   0%
core/forms/model_forms.py DataSourceForm.save   0% 6 6 0   0% 4 0   0%
core/forms/model_forms.py ManagedFileForm.clean   0% 6 6 0   0% 4 0   0%
core/forms/model_forms.py ConfigFormMetaclass.__new__   100% 9 0 0   100% 4 0   100%
core/forms/model_forms.py ConfigRevisionForm.__init__   0% 22 22 0   0% 10 0   0%
core/forms/model_forms.py ConfigRevisionForm.save   0% 5 5 0   0% 2 0   0%
core/forms/model_forms.py ConfigRevisionForm.render_json   0% 5 5 0   0% 4 0   0%
core/forms/model_forms.py (no function)   100% 46 0 0   100% 0 0   100%
core/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/graphql/enums.py (no function)   100% 5 0 0   100% 0 0   100%
core/graphql/filter_mixins.py (no function)   100% 8 0 0   100% 0 0   100%
core/graphql/filters.py (no function)   96% 52 2 0   50% 2 1   94%
core/graphql/mixins.py ChangelogMixin.changelog   0% 3 3 0   100% 0 0   0%
core/graphql/mixins.py (no function)   93% 15 1 0   50% 2 1   88%
core/graphql/schema.py (no function)   100% 9 0 0   100% 0 0   100%
core/graphql/types.py (no function)   100% 17 0 0   100% 0 0   100%
core/jobs.py SyncDataSourceJob.enqueue   0% 5 5 0   0% 2 0   0%
core/jobs.py SyncDataSourceJob.run   0% 12 12 0   100% 0 0   0%
core/jobs.py SystemHousekeepingJob.run   0% 11 11 0   0% 4 0   0%
core/jobs.py SystemHousekeepingJob.send_census_report   0% 12 12 0   0% 4 0   0%
core/jobs.py SystemHousekeepingJob.clear_expired_sessions   0% 7 7 0   100% 0 0   0%
core/jobs.py SystemHousekeepingJob.prune_changelog   0% 17 17 0   0% 4 0   0%
core/jobs.py SystemHousekeepingJob.delete_expired_jobs   0% 9 9 0   0% 2 0   0%
core/jobs.py SystemHousekeepingJob.check_for_new_releases   0% 26 26 0   0% 10 0   0%
core/jobs.py (no function)   100% 32 0 0   100% 0 0   100%
core/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/management/commands/makemigrations.py Command.handle   0% 3 3 0   0% 2 0   0%
core/management/commands/makemigrations.py (no function)   100% 5 0 0   100% 0 0   100%
core/management/commands/nbshell.py color   0% 1 1 0   100% 0 0   0%
core/management/commands/nbshell.py bright   0% 1 1 0   100% 0 0   0%
core/management/commands/nbshell.py get_models   0% 1 1 0   100% 0 0   0%
core/management/commands/nbshell.py get_constants   0% 5 5 0   100% 0 0   0%
core/management/commands/nbshell.py Command.add_arguments   0% 1 1 0   100% 0 0   0%
core/management/commands/nbshell.py Command._lsapps   0% 3 3 0   0% 2 0   0%
core/management/commands/nbshell.py Command._lsmodels   0% 11 11 0   0% 8 0   0%
core/management/commands/nbshell.py Command.get_namespace   0% 10 10 0   0% 8 0   0%
core/management/commands/nbshell.py Command.get_banner_text   0% 6 6 0   0% 2 0   0%
core/management/commands/nbshell.py Command.handle   0% 12 12 0   0% 2 0   0%
core/management/commands/nbshell.py (no function)   0% 26 26 0   100% 0 0   0%
core/management/commands/rqworker.py Command.handle   0% 13 13 0   0% 4 0   0%
core/management/commands/rqworker.py (no function)   0% 7 7 0   100% 0 0   0%
core/management/commands/syncdatasource.py Command.add_arguments   0% 2 2 0   100% 0 0   0%
core/management/commands/syncdatasource.py Command.handle   0% 22 22 0   0% 12 0   0%
core/management/commands/syncdatasource.py (no function)   0% 7 7 0   100% 0 0   0%
core/management/commands/upgrade.py _docs_source_root   0% 4 4 0   0% 2 0   0%
core/management/commands/upgrade.py Command.add_arguments   0% 6 6 0   100% 0 0   0%
core/management/commands/upgrade.py Command.handle   0% 35 35 0   0% 18 0   0%
core/management/commands/upgrade.py (no function)   0% 10 10 0   100% 0 0   0%
core/models/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
core/models/change_logging.py ObjectChange.__str__   100% 1 0 0   100% 0 0   100%
core/models/change_logging.py ObjectChange.clean   0% 3 3 0   0% 2 0   0%
core/models/change_logging.py ObjectChange.save   80% 5 1 0   50% 4 2   67%
core/models/change_logging.py ObjectChange.get_absolute_url   0% 1 1 0   100% 0 0   0%
core/models/change_logging.py ObjectChange.get_action_color   0% 1 1 0   100% 0 0   0%
core/models/change_logging.py ObjectChange.has_changes   100% 1 0 0   100% 0 0   100%
core/models/change_logging.py ObjectChange.diff_exclude_fields   85% 13 2 0   62% 8 3   76%
core/models/change_logging.py ObjectChange.get_clean_data   100% 6 0 0   100% 4 0   100%
core/models/change_logging.py ObjectChange.prechange_data_clean   100% 1 0 0   100% 0 0   100%
core/models/change_logging.py ObjectChange.postchange_data_clean   100% 1 0 0   100% 0 0   100%
core/models/change_logging.py ObjectChange.diff   0% 10 10 0   0% 4 0   0%
core/models/change_logging.py (no function)   100% 49 0 0   100% 0 0   100%
core/models/config.py ConfigRevision.__str__   0% 5 5 0   0% 4 0   0%
core/models/config.py ConfigRevision.__getattr__   0% 3 3 0   0% 2 0   0%
core/models/config.py ConfigRevision.get_absolute_url   0% 3 3 0   0% 2 0   0%
core/models/config.py ConfigRevision.activate   0% 7 7 0   0% 2 0   0%
core/models/config.py ConfigRevision.is_active   0% 1 1 0   100% 0 0   0%
core/models/config.py (no function)   100% 26 0 0   100% 0 0   100%
core/models/data.py DataSource.__str__   0% 1 1 0   100% 0 0   0%
core/models/data.py DataSource.docs_url   0% 1 1 0   100% 0 0   0%
core/models/data.py DataSource.get_type_display   0% 3 3 0   0% 2 0   0%
core/models/data.py DataSource.get_status_color   0% 1 1 0   100% 0 0   0%
core/models/data.py DataSource.url_scheme   0% 1 1 0   100% 0 0   0%
core/models/data.py DataSource.backend_class   0% 1 1 0   100% 0 0   0%
core/models/data.py DataSource.ready_for_sync   0% 1 1 0   100% 0 0   0%
core/models/data.py DataSource.clean   0% 5 5 0   0% 4 0   0%
core/models/data.py DataSource.save   0% 7 7 0   0% 6 0   0%
core/models/data.py DataSource.to_objectchange   0% 15 15 0   0% 12 0   0%
core/models/data.py DataSource.get_backend   0% 2 2 0   100% 0 0   0%
core/models/data.py DataSource.sync   0% 41 41 0   0% 8 0   0%
core/models/data.py DataSource._walk   0% 12 12 0   0% 8 0   0%
core/models/data.py DataSource._ignore   0% 6 6 0   0% 6 0   0%
core/models/data.py DataFile.__str__   0% 1 1 0   100% 0 0   0%
core/models/data.py DataFile.get_absolute_url   0% 1 1 0   100% 0 0   0%
core/models/data.py DataFile.data_as_string   0% 6 6 0   0% 2 0   0%
core/models/data.py DataFile.get_data   0% 3 3 0   0% 2 0   0%
core/models/data.py DataFile.refresh_from_disk   0% 10 10 0   0% 2 0   0%
core/models/data.py (no function)   100% 87 0 0   100% 0 0   100%
core/models/files.py ManagedFile.__str__   0% 1 1 0   100% 0 0   0%
core/models/files.py ManagedFile.name   0% 1 1 0   100% 0 0   0%
core/models/files.py ManagedFile.full_path   0% 1 1 0   100% 0 0   0%
core/models/files.py ManagedFile._resolve_root_path   0% 4 4 0   0% 2 0   0%
core/models/files.py ManagedFile.sync_data   0% 5 5 0   0% 2 0   0%
core/models/files.py ManagedFile.storage   0% 1 1 0   100% 0 0   0%
core/models/files.py ManagedFile.clean   60% 5 2 0   50% 4 2   56%
core/models/files.py ManagedFile.delete   0% 6 6 0   100% 0 0   0%
core/models/files.py (no function)   100% 38 0 0   100% 0 0   100%
core/models/jobs.py Job.__str__   100% 1 0 0   100% 0 0   100%
core/models/jobs.py Job.get_absolute_url   0% 6 6 0   0% 6 0   0%
core/models/jobs.py Job.get_status_color   0% 1 1 0   100% 0 0   0%
core/models/jobs.py Job.get_event_type   0% 1 1 0   100% 0 0   0%
core/models/jobs.py Job.clean   67% 3 1 0   50% 2 1   60%
core/models/jobs.py Job.duration   0% 8 8 0   0% 4 0   0%
core/models/jobs.py Job.delete   0% 10 10 0   0% 2 0   0%
core/models/jobs.py Job.start   0% 6 6 0   0% 2 0   0%
core/models/jobs.py Job.terminate   0% 13 13 0   0% 10 0   0%
core/models/jobs.py Job.log   0% 2 2 0   100% 0 0   0%
core/models/jobs.py Job.enqueue   70% 20 6 0   50% 8 4   64%
core/models/jobs.py (no function)   100% 67 0 0   100% 0 0   100%
core/models/object_types.py ObjectTypeQuerySet.create   100% 6 0 0   50% 2 1   88%
core/models/object_types.py ObjectTypeManager.get_queryset   100% 1 0 0   100% 0 0   100%
core/models/object_types.py ObjectTypeManager.get_by_natural_key   100% 1 0 0   100% 0 0   100%
core/models/object_types.py ObjectTypeManager.get_for_id   0% 1 1 0   100% 0 0   0%
core/models/object_types.py ObjectTypeManager._get_opts   100% 3 0 0   50% 2 1   80%
core/models/object_types.py ObjectTypeManager.get_for_model   76% 21 5 0   92% 12 1   82%
core/models/object_types.py ObjectTypeManager.get_for_models   0% 19 19 0   0% 12 0   0%
core/models/object_types.py ObjectTypeManager.public   100% 1 0 0   100% 0 0   100%
core/models/object_types.py ObjectTypeManager.with_feature   67% 3 1 0   50% 2 1   60%
core/models/object_types.py ObjectType.app_labeled_name   100% 1 0 0   100% 0 0   100%
core/models/object_types.py ObjectType.app_verbose_name   67% 3 1 0   50% 2 1   60%
core/models/object_types.py ObjectType.model_verbose_name   67% 3 1 0   50% 2 1   60%
core/models/object_types.py ObjectType.model_verbose_name_plural   67% 3 1 0   50% 2 1   60%
core/models/object_types.py ObjectType.is_plugin_model   67% 3 1 0   50% 2 1   60%
core/models/object_types.py (no function)   100% 46 0 0   100% 0 0   100%
core/object_actions.py (no function)   100% 9 0 0   100% 0 0   100%
core/plugins.py get_local_plugins   0% 24 24 0   0% 12 0   0%
core/plugins.py get_catalog_plugins   0% 13 13 0   0% 4 0   0%
core/plugins.py get_catalog_plugins.get_pages   0% 9 9 0   0% 2 0   0%
core/plugins.py get_catalog_plugins.make_plugin_dict   0% 13 13 0   0% 8 0   0%
core/plugins.py (no function)   100% 54 0 0   100% 0 0   100%
core/querysets.py ObjectChangeQuerySet.valid_models   67% 6 2 0   100% 0 0   67%
core/querysets.py (no function)   100% 7 0 0   100% 0 0   100%
core/search.py (no function)   100% 12 0 0   100% 0 0   100%
core/signals.py update_object_types   73% 11 3 0   100% 2 0   77%
core/signals.py handle_changed_object   81% 37 7 0   79% 24 5   80%
core/signals.py handle_deleted_object   77% 44 10 0   73% 26 3   76%
core/signals.py clear_signal_history   100% 1 0 0   100% 0 0   100%
core/signals.py clear_events_queue   100% 3 0 0   100% 0 0   100%
core/signals.py enqueue_sync_job   0% 6 6 0   0% 6 0   0%
core/signals.py auto_sync   0% 35 35 0   0% 14 0   0%
core/signals.py update_config   0% 1 1 0   100% 0 0   0%
core/signals.py (no function)   100% 52 0 0   100% 0 0   100%
core/tables/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
core/tables/change_logging.py (no function)   100% 20 0 0   100% 0 0   100%
core/tables/columns.py BackendTypeColumn.render   0% 3 3 0   0% 2 0   0%
core/tables/columns.py BackendTypeColumn.value   0% 1 1 0   100% 0 0   0%
core/tables/columns.py BadgeColumn.__init__   100% 2 0 0   100% 0 0   100%
core/tables/columns.py BadgeColumn.render   0% 2 2 0   100% 0 0   0%
core/tables/columns.py BadgeColumn.value   0% 2 2 0   100% 0 0   0%
core/tables/columns.py (no function)   100% 11 0 0   100% 0 0   100%
core/tables/config.py (no function)   100% 12 0 0   100% 0 0   100%
core/tables/data.py (no function)   100% 30 0 0   100% 0 0   100%
core/tables/jobs.py JobTable.render_log_entries   0% 1 1 0   100% 0 0   0%
core/tables/jobs.py JobTable.render_execution_time   0% 1 1 0   100% 0 0   0%
core/tables/jobs.py JobTable.value_execution_time   0% 1 1 0   100% 0 0   0%
core/tables/jobs.py JobLogEntryTable.render_message   0% 4 4 0   0% 2 0   0%
core/tables/jobs.py (no function)   100% 39 0 0   100% 0 0   100%
core/tables/plugins.py (no function)   100% 30 0 0   100% 0 0   100%
core/tables/tasks.py BackgroundTaskTable.render_callable   0% 4 4 0   100% 0 0   0%
core/tables/tasks.py (no function)   100% 45 0 0   100% 0 0   100%
core/tables/template_code.py (no function)   100% 6 0 0   100% 0 0   100%
core/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
core/ui/panels.py (no function)   100% 50 0 0   100% 0 0   100%
core/urls.py (no function)   100% 5 0 0   100% 0 0   100%
core/utils.py get_rq_jobs   100% 5 0 0   100% 2 0   100%
core/utils.py get_rq_jobs_from_status   0% 18 18 0   0% 8 0   0%
core/utils.py delete_rq_job   56% 9 4 0   100% 0 0   56%
core/utils.py requeue_rq_job   62% 8 3 0   100% 0 0   62%
core/utils.py enqueue_rq_job   30% 20 14 0   0% 6 0   23%
core/utils.py stop_rq_job   62% 8 3 0   100% 0 0   62%
core/utils.py get_db_schema   0% 16 16 0   0% 6 0   0%
core/utils.py (no function)   100% 19 0 0   100% 0 0   100%
core/views.py DataSourceView.get_extra_context   0% 1 1 0   100% 0 0   0%
core/views.py DataSourceSyncView.get_required_permission   0% 1 1 0   100% 0 0   0%
core/views.py DataSourceSyncView.get   0% 2 2 0   100% 0 0   0%
core/views.py DataSourceSyncView.post   0% 4 4 0   100% 0 0   0%
core/views.py JobLogView.get_table   0% 5 5 0   100% 0 0   0%
core/views.py JobLogView.get_extra_context   0% 1 1 0   100% 0 0   0%
core/views.py JobLogView.get   0% 4 4 0   0% 2 0   0%
core/views.py ObjectChangeListView.get_queryset   0% 1 1 0   100% 0 0   0%
core/views.py ObjectChangeView.get_queryset   0% 1 1 0   100% 0 0   0%
core/views.py ObjectChangeView.get_extra_context   0% 16 16 0   0% 4 0   0%
core/views.py ConfigRevisionView.get_extra_context   0% 5 5 0   0% 4 0   0%
core/views.py ConfigRevisionRestoreView.get_required_permission   0% 1 1 0   100% 0 0   0%
core/views.py ConfigRevisionRestoreView.get   0% 7 7 0   0% 2 0   0%
core/views.py ConfigRevisionRestoreView.post   0% 6 6 0   0% 2 0   0%
core/views.py BaseRQView.test_func   0% 1 1 0   100% 0 0   0%
core/views.py BackgroundQueueListView.get   0% 3 3 0   100% 0 0   0%
core/views.py BackgroundTaskListView.get_table_data   0% 3 3 0   0% 2 0   0%
core/views.py BackgroundTaskListView.get   0% 6 6 0   0% 2 0   0%
core/views.py BackgroundTaskView.get   0% 12 12 0   100% 0 0   0%
core/views.py BackgroundTaskDeleteView.get   0% 4 4 0   0% 2 0   0%
core/views.py BackgroundTaskDeleteView.post   0% 6 6 0   0% 2 0   0%
core/views.py BackgroundTaskRequeueView.get   0% 3 3 0   100% 0 0   0%
core/views.py BackgroundTaskEnqueueView.get   0% 3 3 0   100% 0 0   0%
core/views.py BackgroundTaskStopView.get   0% 5 5 0   0% 2 0   0%
core/views.py WorkerListView.get_table_data   0% 4 4 0   100% 0 0   0%
core/views.py WorkerListView.get   0% 10 10 0   0% 6 0   0%
core/views.py WorkerView.get   0% 4 4 0   100% 0 0   0%
core/views.py SystemView.test_func   0% 1 1 0   100% 0 0   0%
core/views.py SystemView._get_stats   0% 13 13 0   100% 0 0   0%
core/views.py SystemView._get_object_counts   0% 5 5 0   0% 4 0   0%
core/views.py SystemView.get   0% 17 17 0   0% 6 0   0%
core/views.py SystemDBSchemaView.test_func   0% 1 1 0   100% 0 0   0%
core/views.py SystemDBSchemaView._get_db_schema_groups   0% 12 12 0   0% 6 0   0%
core/views.py SystemDBSchemaView.get   0% 4 4 0   100% 0 0   0%
core/views.py BasePluginView.test_func   0% 1 1 0   100% 0 0   0%
core/views.py BasePluginView.get_cached_plugins   0% 8 8 0   0% 4 0   0%
core/views.py PluginListView.get   0% 10 10 0   0% 4 0   0%
core/views.py PluginView.get   0% 7 7 0   0% 2 0   0%
core/views.py (no function)   100% 236 0 0   100% 0 0   100%
dcim/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/api/exceptions.py (no function)   100% 4 0 0   100% 0 0   100%
dcim/api/serializers.py (no function)   100% 14 0 0   100% 0 0   100%
dcim/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/api/serializers_/base.py ConnectedEndpointsSerializer.get_connected_endpoints_type   67% 3 1 0   50% 2 1   60%
dcim/api/serializers_/base.py ConnectedEndpointsSerializer.get_connected_endpoints   40% 5 3 0   50% 2 1   43%
dcim/api/serializers_/base.py ConnectedEndpointsSerializer.get_connected_endpoints_reachable   67% 3 1 0   50% 2 1   60%
dcim/api/serializers_/base.py PortSerializer._mapper   0% 9 9 0   0% 8 0   0%
dcim/api/serializers_/base.py PortSerializer._reconcile_mappings   0% 9 9 0   0% 4 0   0%
dcim/api/serializers_/base.py PortSerializer.create   0% 4 4 0   100% 0 0   0%
dcim/api/serializers_/base.py PortSerializer.update   0% 5 5 0   0% 2 0   0%
dcim/api/serializers_/base.py (no function)   100% 23 0 0   100% 0 0   100%
dcim/api/serializers_/cables.py CablePathSerializer.get_path   0% 8 8 0   0% 4 0   0%
dcim/api/serializers_/cables.py CabledObjectSerializer.get_link_peers_type   40% 5 3 0   25% 4 1   33%
dcim/api/serializers_/cables.py CabledObjectSerializer.get_link_peers   40% 5 3 0   50% 2 1   43%
dcim/api/serializers_/cables.py CabledObjectSerializer.get__occupied   100% 1 0 0   100% 0 0   100%
dcim/api/serializers_/cables.py (no function)   100% 60 0 0   100% 0 0   100%
dcim/api/serializers_/cooling.py (no function)   100% 30 0 0   100% 0 0   100%
dcim/api/serializers_/device_components.py InterfaceSerializer.validate   68% 41 13 0   46% 26 10   60%
dcim/api/serializers_/device_components.py (no function)   100% 183 0 0   100% 0 0   100%
dcim/api/serializers_/devices.py DeviceSerializer.get_parent_device   50% 8 4 0   100% 0 0   50%
dcim/api/serializers_/devices.py DeviceSerializer.get_config_context   100% 1 0 0   100% 0 0   100%
dcim/api/serializers_/devices.py ModuleSerializer.validate   0% 43 43 0   0% 26 0   0%
dcim/api/serializers_/devices.py ModuleSerializer.create   0% 12 12 0   0% 6 0   0%
dcim/api/serializers_/devices.py (no function)   100% 100 0 0   100% 0 0   100%
dcim/api/serializers_/devicetype_components.py (no function)   100% 141 0 0   100% 0 0   100%
dcim/api/serializers_/devicetypes.py (no function)   100% 72 0 0   100% 0 0   100%
dcim/api/serializers_/manufacturers.py (no function)   100% 13 0 0   100% 0 0   100%
dcim/api/serializers_/mixins.py MACAddressShortcutMixin._validate_no_mac_conflict   20% 10 8 0   25% 4 1   21%
dcim/api/serializers_/mixins.py MACAddressShortcutMixin._check_add_mac_permission   0% 5 5 0   0% 4 0   0%
dcim/api/serializers_/mixins.py MACAddressShortcutMixin.create   75% 8 2 0   50% 4 2   67%
dcim/api/serializers_/mixins.py MACAddressShortcutMixin.update   75% 8 2 0   50% 4 2   67%
dcim/api/serializers_/mixins.py MACAddressShortcutMixin._set_primary_mac   0% 6 6 0   0% 2 0   0%
dcim/api/serializers_/mixins.py (no function)   100% 15 0 0   100% 0 0   100%
dcim/api/serializers_/nested.py (no function)   100% 66 0 0   100% 0 0   100%
dcim/api/serializers_/platforms.py (no function)   100% 17 0 0   100% 0 0   100%
dcim/api/serializers_/power.py (no function)   100% 30 0 0   100% 0 0   100%
dcim/api/serializers_/racks.py RackReservationSerializer.get_unit_count   0% 1 1 0   100% 0 0   0%
dcim/api/serializers_/racks.py (no function)   100% 81 0 0   100% 0 0   100%
dcim/api/serializers_/rackunits.py RackUnitSerializer.get_display   0% 1 1 0   100% 0 0   0%
dcim/api/serializers_/rackunits.py RackUnitSerializer.get_description   0% 1 1 0   100% 0 0   0%
dcim/api/serializers_/rackunits.py (no function)   100% 19 0 0   100% 0 0   100%
dcim/api/serializers_/roles.py (no function)   100% 22 0 0   100% 0 0   100%
dcim/api/serializers_/sites.py (no function)   100% 56 0 0   100% 0 0   100%
dcim/api/serializers_/virtualchassis.py (no function)   100% 13 0 0   100% 0 0   100%
dcim/api/urls.py (no function)   100% 60 0 0   100% 0 0   100%
dcim/api/views.py DCIMRootView.get_view_name   0% 1 1 0   100% 0 0   0%
dcim/api/views.py PathEndpointMixin.trace   24% 21 16 0   20% 10 2   23%
dcim/api/views.py PassThroughPortMixin.paths   25% 4 3 0   100% 0 0   25%
dcim/api/views.py RackViewSet.elevation   4% 23 22 0   0% 10 0   3%
dcim/api/views.py InterfaceViewSet.get_bulk_destroy_queryset   100% 1 0 0   100% 0 0   100%
dcim/api/views.py ConnectedDeviceViewSet.get_view_name   100% 1 0 0   100% 0 0   100%
dcim/api/views.py ConnectedDeviceViewSet.list   45% 11 6 0   50% 4 0   47%
dcim/api/views.py (no function)   100% 258 0 0   100% 0 0   100%
dcim/apps.py DCIMConfig.ready   100% 6 0 0   100% 0 0   100%
dcim/apps.py (no function)   100% 5 0 0   100% 0 0   100%
dcim/base_filtersets.py (no function)   100% 16 0 0   100% 0 0   100%
dcim/cable_profiles.py BaseCableProfile.clean   0% 8 8 0   0% 4 0   0%
dcim/cable_profiles.py BaseCableProfile.get_mapped_position   0% 3 3 0   0% 2 0   0%
dcim/cable_profiles.py BaseCableProfile._get_peer_lookup_key   0% 5 5 0   100% 0 0   0%
dcim/cable_profiles.py BaseCableProfile.get_peer_termination   0% 6 6 0   100% 0 0   0%
dcim/cable_profiles.py BaseCableProfile.get_peer_terminations   0% 35 35 0   0% 20 0   0%
dcim/cable_profiles.py BaseCableProfile.get_position_list   0% 1 1 0   100% 0 0   0%
dcim/cable_profiles.py Breakout2C4Px8C1PShuffleCableProfile.get_mapped_position   0% 3 3 0   0% 2 0   0%
dcim/cable_profiles.py (no function)   0% 105 105 0   100% 0 0   0%
dcim/choices.py (no function)   100% 850 0 0   100% 0 0   100%
dcim/constants.py (no function)   100% 32 0 0   100% 0 0   100%
dcim/exceptions.py (no function)   100% 2 0 0   100% 0 0   100%
dcim/fields.py MACAddressField.python_type   0% 1 1 0   100% 0 0   0%
dcim/fields.py MACAddressField.from_db_value   0% 1 1 0   100% 0 0   0%
dcim/fields.py MACAddressField.get_internal_type   100% 1 0 0   100% 0 0   100%
dcim/fields.py MACAddressField.to_python   88% 8 1 0   50% 4 2   75%
dcim/fields.py MACAddressField.db_type   100% 1 0 0   100% 0 0   100%
dcim/fields.py MACAddressField.get_prep_value   100% 3 0 0   100% 2 0   100%
dcim/fields.py WWNField.python_type   0% 1 1 0   100% 0 0   0%
dcim/fields.py WWNField.from_db_value   100% 1 0 0   100% 0 0   100%
dcim/fields.py WWNField.get_internal_type   100% 1 0 0   100% 0 0   100%
dcim/fields.py WWNField.to_python   33% 6 4 0   50% 2 1   38%
dcim/fields.py WWNField.db_type   100% 1 0 0   100% 0 0   100%
dcim/fields.py WWNField.get_prep_value   67% 3 1 0   50% 2 1   60%
dcim/fields.py PathField.__init__   100% 2 0 0   100% 0 0   100%
dcim/fields.py (no function)   100% 30 0 0   100% 0 0   100%
dcim/filtersets.py SiteFilterSet.search   0% 8 8 0   0% 2 0   0%
dcim/filtersets.py LocationFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py RackTypeFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py RackFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py RackReservationFilterSet.filter_queryset   100% 2 0 0   100% 0 0   100%
dcim/filtersets.py RackReservationFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py DeviceTypeFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py DeviceTypeFilterSet._has_front_image   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py DeviceTypeFilterSet._has_rear_image   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py DeviceTypeFilterSet._console_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._console_server_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._power_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._power_outlets   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._interfaces   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._pass_through_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._module_bays   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._device_bays   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeFilterSet._inventory_items   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py ModuleBayTypeFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py ModuleTypeProfileFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py ModuleTypeFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py ModuleTypeFilterSet._console_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py ModuleTypeFilterSet._console_server_ports   100% 1 0 0   100% 0 0   100%
dcim/filtersets.py ModuleTypeFilterSet._power_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py ModuleTypeFilterSet._power_outlets   100% 1 0 0   100% 0 0   100%
dcim/filtersets.py ModuleTypeFilterSet._interfaces   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py ModuleTypeFilterSet._pass_through_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py ModuleTypeFilterSet._module_bays   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceTypeComponentFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py InventoryItemTemplateFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py PlatformFilterSet.get_for_device_type   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet.search   0% 12 12 0   0% 6 0   0%
dcim/filtersets.py DeviceFilterSet._has_primary_ip   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py DeviceFilterSet._has_oob_ip   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py DeviceFilterSet._virtual_chassis_member   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._console_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._console_server_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._power_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._power_outlets   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._interfaces   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._pass_through_ports   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._module_bays   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._device_bays   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py DeviceFilterSet._has_virtual_device_context   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py VirtualDeviceContextFilterSet.search   0% 8 8 0   0% 2 0   0%
dcim/filtersets.py VirtualDeviceContextFilterSet._has_primary_ip   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py ModuleFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py DeviceComponentFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py CabledObjectFilterSet.filter_occupied   67% 3 1 0   50% 2 1   60%
dcim/filtersets.py PathEndpointFilterSet.filter_connected   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py MACAddressFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py MACAddressFilterSet.filter_device   0% 7 7 0   0% 4 0   0%
dcim/filtersets.py MACAddressFilterSet.filter_virtual_machine   0% 7 7 0   0% 4 0   0%
dcim/filtersets.py MACAddressFilterSet.filter_assigned   75% 4 1 0   50% 2 1   67%
dcim/filtersets.py MACAddressFilterSet.filter_primary   0% 6 6 0   0% 2 0   0%
dcim/filtersets.py CommonInterfaceFilterSet.filter_vlan_id   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py CommonInterfaceFilterSet.filter_vlan   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py InterfaceFilterSet.filter_virtual_chassis_member_or_master   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py InterfaceFilterSet.filter_virtual_chassis_member   0% 7 7 0   0% 2 0   0%
dcim/filtersets.py InterfaceFilterSet.filter_kind   0% 2 2 0   100% 0 0   0%
dcim/filtersets.py InterfaceFilterSet.filter_occupied   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py InventoryItemFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py VirtualChassisFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py CableBundleFilterSet.search   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py CableFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py CableFilterSet.filter_by_termination   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_cable_end   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_cable_end_a   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_cable_end_b   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet._unterminated   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py CableFilterSet.filter_by_termination_object   0% 3 3 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_consoleport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_consoleserverport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_powerport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_poweroutlet   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_interface   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_frontport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_rearport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_powerfeed   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableFilterSet.filter_by_circuittermination   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_termination_object   100% 2 0 0   100% 0 0   100%
dcim/filtersets.py CableTerminationFilterSet.filter_by_consoleport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_consoleserverport   100% 1 0 0   100% 0 0   100%
dcim/filtersets.py CableTerminationFilterSet.filter_by_powerport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_poweroutlet   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_interface   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_frontport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_rearport   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py CableTerminationFilterSet.filter_by_powerfeed   100% 1 0 0   100% 0 0   100%
dcim/filtersets.py CableTerminationFilterSet.filter_by_circuittermination   0% 1 1 0   100% 0 0   0%
dcim/filtersets.py PowerPanelFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py PowerFeedFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py CoolingSourceFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py CoolingFeedFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py ConnectionFilterSet.filter_connections   0% 3 3 0   0% 2 0   0%
dcim/filtersets.py ConnectionFilterSet.search   0% 4 4 0   0% 2 0   0%
dcim/filtersets.py (no function)   100% 824 0 0   100% 0 0   100%
dcim/forms/__init__.py (no function)   100% 9 0 0   100% 0 0   100%
dcim/forms/bulk_create.py (no function)   100% 50 0 0   100% 0 0   100%
dcim/forms/bulk_edit.py PowerOutletTemplateBulkEditForm.__init__   0% 6 6 0   0% 2 0   0%
dcim/forms/bulk_edit.py CoolingOutflowTemplateBulkEditForm.__init__   0% 6 6 0   0% 2 0   0%
dcim/forms/bulk_edit.py ComponentBulkEditForm.__init__   0% 10 10 0   0% 2 0   0%
dcim/forms/bulk_edit.py PowerOutletBulkEditForm.__init__   0% 6 6 0   0% 2 0   0%
dcim/forms/bulk_edit.py CoolingOutflowBulkEditForm.__init__   0% 6 6 0   0% 2 0   0%
dcim/forms/bulk_edit.py InterfaceBulkEditForm.__init__   0% 22 22 0   0% 12 0   0%
dcim/forms/bulk_edit.py InterfaceBulkEditForm.clean   0% 10 10 0   0% 10 0   0%
dcim/forms/bulk_edit.py InventoryItemBulkEditForm.__init__   0% 2 2 0   100% 0 0   0%
dcim/forms/bulk_edit.py VirtualDeviceContextBulkEditForm.__init__   0% 2 2 0   100% 0 0   0%
dcim/forms/bulk_edit.py (no function)   100% 493 0 0   100% 0 0   100%
dcim/forms/bulk_import.py LocationImportForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py RackTypeImportForm.__init__   0% 1 1 0   100% 0 0   0%
dcim/forms/bulk_import.py RackImportForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py RackImportForm.clean   0% 6 6 0   0% 6 0   0%
dcim/forms/bulk_import.py RackReservationImportForm.__init__   0% 6 6 0   0% 2 0   0%
dcim/forms/bulk_import.py ModuleTypeImportForm.clean   0% 5 5 0   0% 4 0   0%
dcim/forms/bulk_import.py BaseDeviceImportForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py DeviceImportForm.__init__   0% 14 14 0   0% 6 0   0%
dcim/forms/bulk_import.py DeviceImportForm.clean   0% 6 6 0   0% 4 0   0%
dcim/forms/bulk_import.py ModuleImportForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py ModuleImportForm.clean_replicate_components   0% 3 3 0   0% 2 0   0%
dcim/forms/bulk_import.py PowerOutletImportForm.__init__   0% 13 13 0   0% 4 0   0%
dcim/forms/bulk_import.py CoolingIntakeImportForm.__init__   0% 21 21 0   0% 8 0   0%
dcim/forms/bulk_import.py CoolingOutflowImportForm.__init__   0% 13 13 0   0% 4 0   0%
dcim/forms/bulk_import.py InterfaceImportForm.__init__   0% 13 13 0   0% 6 0   0%
dcim/forms/bulk_import.py InterfaceImportForm.clean_enabled   0% 3 3 0   0% 2 0   0%
dcim/forms/bulk_import.py InterfaceImportForm.clean_vdcs   0% 4 4 0   0% 4 0   0%
dcim/forms/bulk_import.py FrontPortImportForm.__init__   0% 13 13 0   0% 4 0   0%
dcim/forms/bulk_import.py FrontPortImportForm.clean   0% 10 10 0   0% 6 0   0%
dcim/forms/bulk_import.py FrontPortImportForm._save_m2m   0% 3 3 0   0% 2 0   0%
dcim/forms/bulk_import.py ModuleBayImportForm.clean_enabled   0% 3 3 0   0% 2 0   0%
dcim/forms/bulk_import.py DeviceBayImportForm.__init__   0% 13 13 0   0% 4 0   0%
dcim/forms/bulk_import.py DeviceBayImportForm.clean_enabled   0% 3 3 0   0% 2 0   0%
dcim/forms/bulk_import.py InventoryItemImportForm.__init__   0% 10 10 0   0% 4 0   0%
dcim/forms/bulk_import.py InventoryItemImportForm.clean   0% 25 25 0   0% 12 0   0%
dcim/forms/bulk_import.py MACAddressImportForm.__init__   0% 6 6 0   0% 6 0   0%
dcim/forms/bulk_import.py MACAddressImportForm.clean   0% 6 6 0   0% 2 0   0%
dcim/forms/bulk_import.py MACAddressImportForm.save   0% 8 8 0   0% 4 0   0%
dcim/forms/bulk_import.py CableImportForm.__init__   0% 10 10 0   0% 6 0   0%
dcim/forms/bulk_import.py CableImportForm._update_errors   0% 7 7 0   0% 4 0   0%
dcim/forms/bulk_import.py CableImportForm._map_termination_field   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py CableImportForm._split_side_values   0% 5 5 0   0% 4 0   0%
dcim/forms/bulk_import.py CableImportForm._check_companion_column   0% 2 2 0   0% 2 0   0%
dcim/forms/bulk_import.py CableImportForm._resolve_side_parent_objects   0% 15 15 0   0% 4 0   0%
dcim/forms/bulk_import.py CableImportForm._get_device_component_termination   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py CableImportForm._clean_side   0% 49 49 0   0% 30 0   0%
dcim/forms/bulk_import.py CableImportForm._clean_color   0% 7 7 0   0% 6 0   0%
dcim/forms/bulk_import.py CableImportForm.clean   0% 7 7 0   0% 6 0   0%
dcim/forms/bulk_import.py CableImportForm.clean_side_a_name   0% 1 1 0   100% 0 0   0%
dcim/forms/bulk_import.py CableImportForm.clean_side_b_name   0% 1 1 0   100% 0 0   0%
dcim/forms/bulk_import.py CableImportForm.clean_length_unit   0% 2 2 0   100% 0 0   0%
dcim/forms/bulk_import.py CableImportForm.clean_color   0% 2 2 0   100% 0 0   0%
dcim/forms/bulk_import.py PowerPanelImportForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py PowerFeedImportForm.__init__   0% 8 8 0   0% 2 0   0%
dcim/forms/bulk_import.py CoolingSourceImportForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/bulk_import.py CoolingFeedImportForm.__init__   0% 8 8 0   0% 2 0   0%
dcim/forms/bulk_import.py VirtualDeviceContextImportForm.__init__   0% 5 5 0   0% 2 0   0%
dcim/forms/bulk_import.py (no function)   100% 421 0 0   100% 0 0   100%
dcim/forms/common.py InterfaceCommonForm.__init__   0% 12 12 0   0% 8 0   0%
dcim/forms/common.py InterfaceCommonForm.clean   0% 25 25 0   0% 18 0   0%
dcim/forms/common.py InterfaceCommonForm.save   0% 7 7 0   0% 2 0   0%
dcim/forms/common.py ModuleCommonForm.clean   0% 31 31 0   0% 16 0   0%
dcim/forms/common.py (no function)   100% 19 0 0   100% 0 0   100%
dcim/forms/connections.py get_cable_form   0% 6 6 0   100% 0 0   0%
dcim/forms/connections.py get_cable_form.FormMetaclass.__new__   0% 14 14 0   0% 10 0   0%
dcim/forms/connections.py get_cable_form._CableForm.__init__   0% 20 20 0   0% 18 0   0%
dcim/forms/connections.py get_cable_form._CableForm.clean   0% 3 3 0   100% 0 0   0%
dcim/forms/connections.py (no function)   100% 8 0 0   100% 0 0   100%
dcim/forms/filtersets.py (no function)   100% 544 0 0   100% 0 0   100%
dcim/forms/formsets.py BaseVCMemberFormSet.clean   0% 9 9 0   0% 6 0   0%
dcim/forms/formsets.py (no function)   100% 5 0 0   100% 0 0   100%
dcim/forms/mixins.py ScopedImportForm.clean   0% 21 21 0   0% 10 0   0%
dcim/forms/mixins.py FrontPortFormMixin.clean   0% 11 11 0   0% 4 0   0%
dcim/forms/mixins.py FrontPortFormMixin._save_m2m   0% 6 6 0   0% 2 0   0%
dcim/forms/mixins.py FrontPortFormMixin._get_rear_port_choices   0% 9 9 0   0% 6 0   0%
dcim/forms/mixins.py (no function)   100% 23 0 0   100% 0 0   100%
dcim/forms/model_forms.py SiteForm.__init__   0% 10 10 0   0% 4 0   0%
dcim/forms/model_forms.py RackForm.__init__   0% 9 9 0   0% 4 0   0%
dcim/forms/model_forms.py ModuleTypeForm.fieldsets   0% 1 1 0   100% 0 0   0%
dcim/forms/model_forms.py ModuleTypeForm.__init__   0% 12 12 0   0% 8 0   0%
dcim/forms/model_forms.py ModuleTypeForm._get_attr_form_fields   0% 9 9 0   0% 4 0   0%
dcim/forms/model_forms.py ModuleTypeForm._post_clean   0% 3 3 0   0% 2 0   0%
dcim/forms/model_forms.py DeviceForm.__init__   0% 32 32 0   0% 12 0   0%
dcim/forms/model_forms.py ModuleForm.__init__   0% 6 6 0   0% 2 0   0%
dcim/forms/model_forms.py get_termination_type_choices   0% 1 1 0   100% 0 0   0%
dcim/forms/model_forms.py VirtualChassisForm.__init__   0% 2 2 0   100% 0 0   0%
dcim/forms/model_forms.py DeviceVCMembershipForm.__init__   0% 5 5 0   100% 0 0   0%
dcim/forms/model_forms.py DeviceVCMembershipForm.clean_vc_position   0% 6 6 0   0% 4 0   0%
dcim/forms/model_forms.py VCMemberSelectForm.clean_device   0% 4 4 0   0% 2 0   0%
dcim/forms/model_forms.py ComponentTemplateForm.__init__   0% 3 3 0   0% 2 0   0%
dcim/forms/model_forms.py ModularComponentTemplateForm.__init__   0% 4 4 0   0% 2 0   0%
dcim/forms/model_forms.py FrontPortTemplateForm.__init__   0% 9 9 0   0% 6 0   0%
dcim/forms/model_forms.py InventoryItemTemplateForm.__init__   0% 16 16 0   0% 12 0   0%
dcim/forms/model_forms.py InventoryItemTemplateForm.clean   0% 7 7 0   0% 4 0   0%
dcim/forms/model_forms.py DeviceComponentForm.__init__   0% 3 3 0   0% 2 0   0%
dcim/forms/model_forms.py FrontPortForm.__init__   0% 7 7 0   0% 4 0   0%
dcim/forms/model_forms.py PopulateDeviceBayForm.__init__   0% 2 2 0   100% 0 0   0%
dcim/forms/model_forms.py InventoryItemForm.__init__   0% 17 17 0   0% 14 0   0%
dcim/forms/model_forms.py InventoryItemForm.clean   0% 7 7 0   0% 4 0   0%
dcim/forms/model_forms.py MACAddressForm.__init__   0% 13 13 0   0% 10 0   0%
dcim/forms/model_forms.py MACAddressForm.clean   0% 7 7 0   0% 4 0   0%
dcim/forms/model_forms.py (no function)   100% 507 0 0   100% 0 0   100%
dcim/forms/object_create.py ComponentCreateForm.clean   0% 12 12 0   0% 10 0   0%
dcim/forms/object_create.py FrontPortTemplateCreateForm.get_iterative_data   0% 3 3 0   100% 0 0   0%
dcim/forms/object_create.py FrontPortCreateForm.get_iterative_data   0% 3 3 0   100% 0 0   0%
dcim/forms/object_create.py VirtualChassisCreateForm.clean   0% 3 3 0   0% 2 0   0%
dcim/forms/object_create.py VirtualChassisCreateForm.save   0% 9 9 0   0% 4 0   0%
dcim/forms/object_create.py (no function)   100% 115 0 0   100% 0 0   100%
dcim/forms/object_import.py PowerOutletTemplateImportForm.clean_device_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py PowerOutletTemplateImportForm.clean_module_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py CoolingOutflowTemplateImportForm.clean_device_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py CoolingOutflowTemplateImportForm.clean_module_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py InterfaceTemplateImportForm.clean_device_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py InterfaceTemplateImportForm.clean_module_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py PortTemplateMappingImportForm.clean_device_type   0% 6 6 0   0% 2 0   0%
dcim/forms/object_import.py PortTemplateMappingImportForm.clean_module_type   0% 6 6 0   0% 2 0   0%
dcim/forms/object_import.py ModuleBayTemplateImportForm.clean   0% 18 18 0   0% 14 0   0%
dcim/forms/object_import.py InventoryItemTemplateImportForm.clean_device_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py InventoryItemTemplateImportForm.clean_module_type   0% 4 4 0   0% 2 0   0%
dcim/forms/object_import.py (no function)   100% 84 0 0   100% 0 0   100%
dcim/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/graphql/enums.py (no function)   100% 50 0 0   100% 0 0   100%
dcim/graphql/filter_mixins.py (no function)   94% 85 5 0   50% 2 1   93%
dcim/graphql/filters.py MACAddressFilter.assigned   0% 1 1 0   100% 0 0   0%
dcim/graphql/filters.py MACAddressFilter.primary   0% 6 6 0   0% 2 0   0%
dcim/graphql/filters.py InterfaceFilter.cabled   0% 1 1 0   100% 0 0   0%
dcim/graphql/filters.py InterfaceFilter.connected   0% 3 3 0   0% 2 0   0%
dcim/graphql/filters.py InterfaceFilter.kind   0% 7 7 0   0% 6 0   0%
dcim/graphql/filters.py (no function)   98% 569 11 0   50% 2 1   98%
dcim/graphql/gfk_mixins.py InventoryItemTemplateComponentType.resolve_type   0% 15 15 0   0% 14 0   0%
dcim/graphql/gfk_mixins.py InventoryItemComponentType.resolve_type   0% 15 15 0   0% 14 0   0%
dcim/graphql/gfk_mixins.py ConnectedEndpointType.resolve_type   0% 21 21 0   0% 20 0   0%
dcim/graphql/gfk_mixins.py (no function)   0% 20 20 0   100% 0 0   0%
dcim/graphql/mixins.py (no function)   80% 10 2 0   50% 2 1   75%
dcim/graphql/schema.py (no function)   100% 109 0 0   100% 0 0   100%
dcim/graphql/types.py _cable_terminations_prefetch   100% 2 0 0   100% 0 0   100%
dcim/graphql/types.py _cable_terminations_prefetch.prefetch   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py _resolve_cable_terminations   0% 3 3 0   0% 2 0   0%
dcim/graphql/types.py CableTerminationType.termination   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py CableType.a_terminations   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py CableType.b_terminations   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py DeviceType.vc_master_for   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py DeviceType.parent_bay   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py InventoryItemTemplateType.parent   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py InventoryItemTemplateType.component   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py MACAddressType.assigned_object   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py InventoryItemType.parent   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py InventoryItemType.component   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py LocationType.clusters   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py LocationType.circuit_terminations   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py ModuleBayType.parent   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py RackReservationType.get_queryset   0% 2 2 0   100% 0 0   0%
dcim/graphql/types.py RackReservationType.unit_count   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py RegionType.parent   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py RegionType.clusters   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py RegionType.circuit_terminations   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py SiteType.clusters   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py SiteType.circuit_terminations   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py SiteGroupType.parent   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py SiteGroupType.clusters   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py SiteGroupType.circuit_terminations   0% 1 1 0   100% 0 0   0%
dcim/graphql/types.py (no function)   96% 201 8 0   50% 2 1   96%
dcim/lookups.py PathContains.get_prep_lookup   0% 2 2 0   100% 0 0   0%
dcim/lookups.py (no function)   100% 4 0 0   100% 0 0   100%
dcim/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/management/commands/buildschema.py Command.add_arguments   0% 1 1 0   100% 0 0   0%
dcim/management/commands/buildschema.py Command.handle   0% 13 13 0   0% 2 0   0%
dcim/management/commands/buildschema.py (no function)   0% 15 15 0   100% 0 0   0%
dcim/management/commands/trace_paths.py Command.add_arguments   100% 2 0 0   100% 0 0   100%
dcim/management/commands/trace_paths.py Command.draw_progress_bar   0% 2 2 0   100% 0 0   0%
dcim/management/commands/trace_paths.py Command.handle   34% 38 25 0   35% 20 3   34%
dcim/management/commands/trace_paths.py (no function)   100% 12 0 0   100% 0 0   100%
dcim/models/__init__.py (no function)   100% 9 0 0   100% 0 0   100%
dcim/models/base.py PortMappingBase.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/base.py PortMappingBase.clean   0% 3 3 0   0% 2 0   0%
dcim/models/base.py (no function)   100% 15 0 0   100% 0 0   100%
dcim/models/cables.py CableBundle.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py CableBundle.get_absolute_url   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py CableQuerySet.delete   0% 8 8 0   0% 2 0   0%
dcim/models/cables.py Cable.__init__   78% 9 2 0   50% 4 2   69%
dcim/models/cables.py Cable.__str__   0% 2 2 0   100% 0 0   0%
dcim/models/cables.py Cable.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py Cable.profile_class   0% 2 2 0   100% 0 0   0%
dcim/models/cables.py Cable._get_x_terminations   62% 8 3 0   50% 6 3   57%
dcim/models/cables.py Cable._set_x_terminations   0% 8 8 0   0% 6 0   0%
dcim/models/cables.py Cable.a_terminations   100% 1 0 0   100% 0 0   100%
dcim/models/cables.py Cable.a_terminations   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py Cable.b_terminations   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py Cable.b_terminations   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py Cable.color_name   0% 5 5 0   0% 4 0   0%
dcim/models/cables.py Cable.clean   16% 25 21 0   8% 24 2   12%
dcim/models/cables.py Cable.save   0% 38 38 0   0% 20 0   0%
dcim/models/cables.py Cable.delete   0% 5 5 0   100% 0 0   0%
dcim/models/cables.py Cable._track_deletion   0% 3 3 0   0% 2 0   0%
dcim/models/cables.py Cable._untrack_deletion   0% 2 2 0   0% 2 0   0%
dcim/models/cables.py Cable._is_being_deleted   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py Cable.clone   0% 22 22 0   0% 16 0   0%
dcim/models/cables.py Cable.serialize_object   0% 5 5 0   100% 0 0   0%
dcim/models/cables.py Cable.deserialize_object   0% 7 7 0   100% 0 0   0%
dcim/models/cables.py Cable.update_dependent_objects   0% 5 5 0   0% 4 0   0%
dcim/models/cables.py Cable.get_terminations   0% 7 7 0   0% 4 0   0%
dcim/models/cables.py Cable._connectors_reassigned   0% 6 6 0   0% 6 0   0%
dcim/models/cables.py Cable.update_terminations   0% 29 29 0   0% 24 0   0%
dcim/models/cables.py CableTermination.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py CableTermination.clean   0% 16 16 0   0% 12 0   0%
dcim/models/cables.py CableTermination.save   0% 6 6 0   100% 0 0   0%
dcim/models/cables.py CableTermination.delete   0% 5 5 0   100% 0 0   0%
dcim/models/cables.py CableTermination.cache_related_objects   0% 14 14 0   0% 8 0   0%
dcim/models/cables.py CableTermination.to_objectchange   0% 3 3 0   100% 0 0   0%
dcim/models/cables.py CablePath.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py CablePath.save   0% 6 6 0   0% 2 0   0%
dcim/models/cables.py CablePath.delete   0% 6 6 0   0% 4 0   0%
dcim/models/cables.py CablePath.origin_type   0% 4 4 0   0% 2 0   0%
dcim/models/cables.py CablePath.destination_type   0% 4 4 0   0% 2 0   0%
dcim/models/cables.py CablePath._path_decompiled   0% 7 7 0   0% 4 0   0%
dcim/models/cables.py CablePath.origins   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py CablePath.destinations   0% 3 3 0   0% 2 0   0%
dcim/models/cables.py CablePath.segment_count   0% 1 1 0   100% 0 0   0%
dcim/models/cables.py CablePath.from_origin   0% 160 160 0   0% 102 0   0%
dcim/models/cables.py CablePath.retrace   0% 8 8 0   0% 2 0   0%
dcim/models/cables.py CablePath.get_cable_ids   0% 7 7 0   0% 4 0   0%
dcim/models/cables.py CablePath.get_total_length   0% 42 42 0   0% 26 0   0%
dcim/models/cables.py CablePath.get_split_nodes   0% 9 9 0   0% 6 0   0%
dcim/models/cables.py CablePath.get_asymmetric_nodes   0% 6 6 0   0% 4 0   0%
dcim/models/cables.py (no function)   100% 156 0 0   100% 0 0   100%
dcim/models/cooling.py CoolingSource.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/cooling.py CoolingSource.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/cooling.py CoolingSource.clean   0% 3 3 0   0% 2 0   0%
dcim/models/cooling.py CoolingFeed.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/cooling.py CoolingFeed.clean   0% 3 3 0   0% 2 0   0%
dcim/models/cooling.py CoolingFeed.parent_object   0% 1 1 0   100% 0 0   0%
dcim/models/cooling.py CoolingFeed.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/cooling.py (no function)   100% 46 0 0   100% 0 0   100%
dcim/models/device_component_templates.py ComponentTemplateModel.__str__   100% 3 0 0   100% 2 0   100%
dcim/models/device_component_templates.py ComponentTemplateModel.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ComponentTemplateModel.__init__   100% 2 0 0   100% 0 0   100%
dcim/models/device_component_templates.py ComponentTemplateModel.to_objectchange   100% 3 0 0   100% 0 0   100%
dcim/models/device_component_templates.py ComponentTemplateModel.clean   67% 3 1 0   50% 2 1   60%
dcim/models/device_component_templates.py ModularComponentTemplateModel.to_objectchange   67% 6 2 0   25% 4 1   50%
dcim/models/device_component_templates.py ModularComponentTemplateModel.clean   80% 5 1 0   75% 4 1   78%
dcim/models/device_component_templates.py ModularComponentTemplateModel._resolve_vc_position   0% 2 2 0   100% 0 0   0%
dcim/models/device_component_templates.py ModularComponentTemplateModel._resolve_vc_position.replacer   0% 4 4 0   0% 2 0   0%
dcim/models/device_component_templates.py ModularComponentTemplateModel._resolve_all_placeholders   0% 14 14 0   0% 6 0   0%
dcim/models/device_component_templates.py ModularComponentTemplateModel.resolve_name   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ModularComponentTemplateModel.resolve_label   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ModularComponentTemplateModel.resolve_position   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ConsolePortTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ConsolePortTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ConsoleServerPortTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ConsoleServerPortTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py PowerPortTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py PowerPortTemplate.clean   0% 4 4 0   0% 4 0   0%
dcim/models/device_component_templates.py PowerPortTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py PowerOutletTemplate.clean   33% 6 4 0   17% 6 1   25%
dcim/models/device_component_templates.py PowerOutletTemplate.instantiate   0% 5 5 0   0% 2 0   0%
dcim/models/device_component_templates.py PowerOutletTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py CoolingIntakeTemplate.instantiate   0% 4 4 0   100% 0 0   0%
dcim/models/device_component_templates.py CoolingIntakeTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py CoolingOutflowTemplate.clean   17% 6 5 0   0% 6 0   8%
dcim/models/device_component_templates.py CoolingOutflowTemplate.instantiate   0% 7 7 0   0% 2 0   0%
dcim/models/device_component_templates.py CoolingOutflowTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py InterfaceTemplate.clean   9% 11 10 0   0% 12 0   4%
dcim/models/device_component_templates.py InterfaceTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py InterfaceTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py PortTemplateMapping.clean   0% 3 3 0   0% 2 0   0%
dcim/models/device_component_templates.py PortTemplateMapping.save   0% 3 3 0   100% 0 0   0%
dcim/models/device_component_templates.py PortTemplateMapping.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py FrontPortTemplate.clean   0% 5 5 0   0% 4 0   0%
dcim/models/device_component_templates.py FrontPortTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py FrontPortTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py RearPortTemplate.clean   20% 5 4 0   0% 4 0   11%
dcim/models/device_component_templates.py RearPortTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py RearPortTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py ModuleBayTemplate.instantiate   0% 4 4 0   100% 0 0   0%
dcim/models/device_component_templates.py ModuleBayTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py DeviceBayTemplate.instantiate   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py DeviceBayTemplate.clean   0% 2 2 0   0% 2 0   0%
dcim/models/device_component_templates.py DeviceBayTemplate.to_yaml   0% 1 1 0   100% 0 0   0%
dcim/models/device_component_templates.py InventoryItemTemplate.instantiate   0% 6 6 0   0% 2 0   0%
dcim/models/device_component_templates.py (no function)   100% 208 0 0   100% 0 0   100%
dcim/models/device_components.py ComponentModel.__init__   100% 2 0 0   100% 0 0   100%
dcim/models/device_components.py ComponentModel.__str__   67% 3 1 0   50% 2 1   60%
dcim/models/device_components.py ComponentModel.to_objectchange   100% 3 0 0   100% 0 0   100%
dcim/models/device_components.py ComponentModel.clean   67% 3 1 0   50% 2 1   60%
dcim/models/device_components.py ComponentModel.save   100% 4 0 0   100% 0 0   100%
dcim/models/device_components.py ComponentModel.parent_object   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py CabledObjectModel.clean   31% 16 11 0   25% 16 4   28%
dcim/models/device_components.py CabledObjectModel.link   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py CabledObjectModel.link_peers   40% 5 3 0   25% 4 1   33%
dcim/models/device_components.py CabledObjectModel._get_profile_link_peers   0% 13 13 0   0% 8 0   0%
dcim/models/device_components.py CabledObjectModel._occupied   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py CabledObjectModel.parent_object   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py CabledObjectModel.opposite_cable_end   0% 3 3 0   0% 2 0   0%
dcim/models/device_components.py CabledObjectModel.set_cable_termination   0% 4 4 0   100% 0 0   0%
dcim/models/device_components.py CabledObjectModel.clear_cable_termination   0% 4 4 0   100% 0 0   0%
dcim/models/device_components.py PathEndpoint.trace   44% 16 9 0   20% 10 2   35%
dcim/models/device_components.py PathEndpoint.path   45% 11 6 0   50% 6 3   47%
dcim/models/device_components.py PathEndpoint.connected_endpoints   67% 3 1 0   50% 2 1   60%
dcim/models/device_components.py PowerPort.clean   0% 4 4 0   0% 4 0   0%
dcim/models/device_components.py PowerPort.get_downstream_powerports   0% 9 9 0   0% 6 0   0%
dcim/models/device_components.py PowerPort.get_power_draw   0% 13 13 0   0% 6 0   0%
dcim/models/device_components.py PowerPort.get_power_draw._aggregate   0% 10 10 0   0% 4 0   0%
dcim/models/device_components.py PowerOutlet.clean   0% 3 3 0   0% 2 0   0%
dcim/models/device_components.py PowerOutlet.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py CoolingIntake.clean   0% 2 2 0   100% 0 0   0%
dcim/models/device_components.py CoolingOutflow.clean   0% 4 4 0   0% 2 0   0%
dcim/models/device_components.py BaseInterface.clean   33% 9 6 0   20% 10 2   26%
dcim/models/device_components.py BaseInterface.save   100% 5 0 0   75% 4 1   89%
dcim/models/device_components.py BaseInterface.set_primary_mac_address   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py BaseInterface.set_primary_mac_address_from_value   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py BaseInterface._set_primary_mac_address   0% 19 19 0   0% 6 0   0%
dcim/models/device_components.py BaseInterface.tunnel_termination   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py BaseInterface.count_ipaddresses   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py BaseInterface.count_fhrp_groups   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py BaseInterface.mac_address   67% 3 1 0   50% 2 1   60%
dcim/models/device_components.py Interface.__init__   100% 3 0 0   100% 0 0   100%
dcim/models/device_components.py Interface.clean   33% 42 28 0   28% 46 13   31%
dcim/models/device_components.py Interface.save   60% 5 2 0   50% 4 2   56%
dcim/models/device_components.py Interface._occupied   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py Interface.is_wired   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py Interface.is_virtual   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py Interface.is_wireless   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py Interface.is_lag   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py Interface.is_bridge   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py Interface.is_channel   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py Interface.link   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py Interface.link_peers   43% 7 4 0   33% 6 2   38%
dcim/models/device_components.py Interface.l2vpn_termination   100% 1 0 0   100% 0 0   100%
dcim/models/device_components.py Interface.connected_endpoints   67% 3 1 0   50% 2 1   60%
dcim/models/device_components.py Interface.set_cable_termination   0% 3 3 0   0% 2 0   0%
dcim/models/device_components.py Interface.clear_cable_termination   0% 3 3 0   0% 2 0   0%
dcim/models/device_components.py Interface.propagate_channel_cables   0% 10 10 0   0% 4 0   0%
dcim/models/device_components.py Interface.clear_channel_cables   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py PortMapping.clean   0% 3 3 0   0% 2 0   0%
dcim/models/device_components.py PortMapping.save   0% 2 2 0   100% 0 0   0%
dcim/models/device_components.py FrontPort.clean   0% 5 5 0   0% 4 0   0%
dcim/models/device_components.py RearPort.clean   0% 5 5 0   0% 4 0   0%
dcim/models/device_components.py ModuleBay.clean   0% 10 10 0   0% 6 0   0%
dcim/models/device_components.py ModuleBay.save   0% 4 4 0   0% 2 0   0%
dcim/models/device_components.py ModuleBay._parent_creates_cycle   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py ModuleBay._occupied   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py ModuleBay.is_module_compatible   0% 10 10 0   0% 6 0   0%
dcim/models/device_components.py ModuleBay.get_incompatible_module   0% 2 2 0   100% 0 0   0%
dcim/models/device_components.py DeviceBay.clean   0% 13 13 0   0% 12 0   0%
dcim/models/device_components.py DeviceBay._occupied   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py InventoryItem.clean   0% 11 11 0   0% 10 0   0%
dcim/models/device_components.py InventoryItem.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/device_components.py (no function)   100% 314 0 0   100% 0 0   100%
dcim/models/devices.py DeviceType.__str__   100% 1 0 0   100% 0 0   100%
dcim/models/devices.py DeviceType.__init__   100% 4 0 0   100% 0 0   100%
dcim/models/devices.py DeviceType.full_name   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py DeviceType.get_cooling_method_color   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py DeviceType.to_yaml   0% 27 27 0   0% 24 0   0%
dcim/models/devices.py DeviceType.clean   33% 18 12 0   31% 16 5   32%
dcim/models/devices.py DeviceType.save   67% 6 2 0   50% 4 2   60%
dcim/models/devices.py DeviceType.delete   60% 5 2 0   50% 4 2   56%
dcim/models/devices.py DeviceType.is_parent_device   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py DeviceType.is_child_device   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.__str__   33% 9 6 0   25% 8 2   29%
dcim/models/devices.py Device.clean   33% 66 44 0   32% 62 18   33%
dcim/models/devices.py Device._check_duplicate_component_names   0% 4 4 0   0% 2 0   0%
dcim/models/devices.py Device._instantiate_components   30% 30 21 0   18% 22 2   25%
dcim/models/devices.py Device.save   84% 32 5 0   83% 12 2   84%
dcim/models/devices.py Device.label   40% 5 3 0   25% 4 1   33%
dcim/models/devices.py Device.identifier   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.primary_ip   57% 7 3 0   50% 6 3   54%
dcim/models/devices.py Device.interfaces_count   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.get_vc_master   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.vc_interfaces   75% 4 1 0   50% 2 1   67%
dcim/models/devices.py Device.get_cables   0% 7 7 0   0% 4 0   0%
dcim/models/devices.py Device.get_children   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.get_cooling_method_color   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py Device.total_weight   0% 4 4 0   0% 2 0   0%
dcim/models/devices.py VirtualChassis.__str__   100% 1 0 0   100% 0 0   100%
dcim/models/devices.py VirtualChassis.clean   67% 3 1 0   50% 2 1   60%
dcim/models/devices.py VirtualChassis.delete   50% 8 4 0   50% 4 2   50%
dcim/models/devices.py VirtualDeviceContext.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py VirtualDeviceContext.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py VirtualDeviceContext.primary_ip   0% 7 7 0   0% 6 0   0%
dcim/models/devices.py VirtualDeviceContext.clean   0% 9 9 0   0% 8 0   0%
dcim/models/devices.py MACAddress.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/devices.py MACAddress.__init__   0% 3 3 0   100% 0 0   0%
dcim/models/devices.py MACAddress.is_primary   0% 3 3 0   0% 2 0   0%
dcim/models/devices.py MACAddress.clean   0% 10 10 0   0% 8 0   0%
dcim/models/devices.py (no function)   100% 226 0 0   100% 0 0   100%
dcim/models/mixins.py RenderConfigMixin.get_config_template   57% 7 3 0   50% 6 3   54%
dcim/models/mixins.py CachedScopeMixin.clean   100% 4 0 0   100% 2 0   100%
dcim/models/mixins.py CachedScopeMixin.save   100% 2 0 0   100% 0 0   100%
dcim/models/mixins.py CachedScopeMixin.cache_related_objects   56% 16 7 0   50% 10 3   54%
dcim/models/mixins.py InterfaceValidationMixin.clean   40% 40 24 0   34% 38 13   37%
dcim/models/mixins.py InterfaceChannelRenameMixin.__init__   100% 3 0 0   100% 0 0   100%
dcim/models/mixins.py InterfaceChannelRenameMixin.save   93% 14 1 0   50% 6 3   80%
dcim/models/mixins.py InterfaceChannelRenameMixin._rename_channel_subinterfaces   0% 19 19 0   0% 6 0   0%
dcim/models/mixins.py CoolingLoopValidationMixin._get_upstream_field   0% 1 1 0   100% 0 0   0%
dcim/models/mixins.py CoolingLoopValidationMixin.validate_cooling_loop   0% 12 12 0   0% 6 0   0%
dcim/models/mixins.py DiameterMixin.abs_diameter   0% 1 1 0   100% 0 0   0%
dcim/models/mixins.py DiameterMixin.normalize_diameter   0% 5 5 0   0% 4 0   0%
dcim/models/mixins.py DiameterMixin.save   0% 2 2 0   100% 0 0   0%
dcim/models/mixins.py DiameterMixin.clean   33% 3 2 0   0% 2 0   20%
dcim/models/mixins.py MaxFlowMixin.abs_max_flow   0% 1 1 0   100% 0 0   0%
dcim/models/mixins.py MaxFlowMixin.normalize_max_flow   0% 5 5 0   0% 4 0   0%
dcim/models/mixins.py MaxFlowMixin.save   0% 2 2 0   100% 0 0   0%
dcim/models/mixins.py MaxFlowMixin.clean   33% 3 2 0   0% 2 0   20%
dcim/models/mixins.py (no function)   100% 67 0 0   100% 0 0   100%
dcim/models/module_moves.py ModuleMovePlan.__init__   0% 19 19 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan.from_module   0% 1 1 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan._ensure_planned   0% 4 4 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._discover   0% 20 20 0   0% 10 0   0%
dcim/models/module_moves.py ModuleMovePlan._plan_renames   0% 33 33 0   0% 22 0   0%
dcim/models/module_moves.py ModuleMovePlan._cached_templates   0% 4 4 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._index_templates   0% 8 8 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._plan_component   0% 32 32 0   0% 10 0   0%
dcim/models/module_moves.py ModuleMovePlan._resolve   0% 3 3 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan.lock   0% 9 9 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._membership_pks   0% 1 1 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan._refresh_target_state   0% 3 3 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._lock_current_set   0% 13 13 0   0% 8 0   0%
dcim/models/module_moves.py ModuleMovePlan.validate   0% 10 10 0   0% 4 0   0%
dcim/models/module_moves.py ModuleMovePlan._name_sample   0% 8 8 0   0% 6 0   0%
dcim/models/module_moves.py ModuleMovePlan._check_cross_device_blockers   0% 52 52 0   0% 30 0   0%
dcim/models/module_moves.py ModuleMovePlan._check_name_conflicts   0% 30 30 0   0% 26 0   0%
dcim/models/module_moves.py ModuleMovePlan._check_length_violations   0% 14 14 0   0% 8 0   0%
dcim/models/module_moves.py ModuleMovePlan._length_offenders   0% 7 7 0   0% 4 0   0%
dcim/models/module_moves.py ModuleMovePlan._truncate_for_display   0% 3 3 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._record_target_failure   0% 1 1 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan._check_target_resolution_failures   0% 3 3 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._validate_target_bay   0% 12 12 0   0% 10 0   0%
dcim/models/module_moves.py ModuleMovePlan.apply_after_root_save   0% 6 6 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan._apply_descendant_modules   0% 11 11 0   0% 6 0   0%
dcim/models/module_moves.py ModuleMovePlan._apply_bays   0% 52 52 0   0% 32 0   0%
dcim/models/module_moves.py ModuleMovePlan._apply_components   0% 37 37 0   0% 20 0   0%
dcim/models/module_moves.py ModuleMovePlan._apply_port_mappings   0% 6 6 0   0% 4 0   0%
dcim/models/module_moves.py ModuleMovePlan.device_counters_by_model   0% 1 1 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan._moved_row_counts   0% 3 3 0   100% 0 0   0%
dcim/models/module_moves.py ModuleMovePlan._recompute_counters   0% 7 7 0   0% 6 0   0%
dcim/models/module_moves.py ModuleMovePlan._refresh_ltree_columns   0% 4 4 0   0% 2 0   0%
dcim/models/module_moves.py ModuleMovePlan._send_post_saves   0% 3 3 0   0% 2 0   0%
dcim/models/module_moves.py (no function)   100% 65 0 0   100% 0 0   100%
dcim/models/modules.py ModuleBayType.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/modules.py ModuleBayType.full_name   0% 3 3 0   0% 2 0   0%
dcim/models/modules.py ModuleTypeProfile.__str__   100% 1 0 0   100% 0 0   100%
dcim/models/modules.py ModuleType.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/modules.py ModuleType.full_name   0% 1 1 0   100% 0 0   0%
dcim/models/modules.py ModuleType.attributes   0% 10 10 0   0% 6 0   0%
dcim/models/modules.py ModuleType.get_incompatible_modules   0% 6 6 0   0% 2 0   0%
dcim/models/modules.py ModuleType.clean   0% 7 7 0   0% 2 0   0%
dcim/models/modules.py ModuleType.get_cooling_method_color   0% 1 1 0   100% 0 0   0%
dcim/models/modules.py ModuleType.to_yaml   0% 23 23 0   0% 20 0   0%
dcim/models/modules.py Module.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/modules.py Module.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/modules.py Module.is_bay_compatible   0% 7 7 0   0% 4 0   0%
dcim/models/modules.py Module.clean   0% 31 31 0   0% 22 0   0%
dcim/models/modules.py Module.save   0% 9 9 0   0% 4 0   0%
dcim/models/modules.py Module._save_new   0% 46 46 0   0% 32 0   0%
dcim/models/modules.py Module._save_existing   0% 40 40 0   0% 18 0   0%
dcim/models/modules.py (no function)   100% 105 0 0   100% 0 0   100%
dcim/models/power.py PowerPanel.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/power.py PowerPanel.clean   0% 3 3 0   0% 2 0   0%
dcim/models/power.py PowerFeed.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/power.py PowerFeed.clean   0% 5 5 0   0% 4 0   0%
dcim/models/power.py PowerFeed.save   0% 5 5 0   0% 2 0   0%
dcim/models/power.py PowerFeed.parent_object   0% 1 1 0   100% 0 0   0%
dcim/models/power.py PowerFeed.get_type_color   0% 1 1 0   100% 0 0   0%
dcim/models/power.py PowerFeed.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/power.py (no function)   100% 50 0 0   100% 0 0   100%
dcim/models/racks.py RackBase.get_cooling_capability_color   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py RackType.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py RackType.full_name   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py RackType.clean   0% 5 5 0   0% 4 0   0%
dcim/models/racks.py RackType.save   0% 10 10 0   0% 6 0   0%
dcim/models/racks.py RackType.units   0% 3 3 0   0% 2 0   0%
dcim/models/racks.py Rack.__str__   0% 3 3 0   0% 2 0   0%
dcim/models/racks.py Rack.clean   0% 23 23 0   0% 20 0   0%
dcim/models/racks.py Rack.save   0% 7 7 0   0% 4 0   0%
dcim/models/racks.py Rack.copy_racktype_attrs   0% 3 3 0   0% 4 0   0%
dcim/models/racks.py Rack.units   0% 3 3 0   0% 2 0   0%
dcim/models/racks.py Rack.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py Rack.get_rack_units   0% 20 20 0   0% 16 0   0%
dcim/models/racks.py Rack.get_available_units   0% 18 18 0   0% 14 0   0%
dcim/models/racks.py Rack.get_reserved_units   0% 5 5 0   0% 4 0   0%
dcim/models/racks.py Rack.get_elevation_svg   0% 2 2 0   100% 0 0   0%
dcim/models/racks.py Rack.get_utilization   0% 9 9 0   0% 6 0   0%
dcim/models/racks.py Rack.get_power_utilization   0% 9 9 0   0% 4 0   0%
dcim/models/racks.py Rack.total_weight   0% 5 5 0   0% 2 0   0%
dcim/models/racks.py RackReservation.__str__   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py RackReservation.clean   0% 11 11 0   0% 8 0   0%
dcim/models/racks.py RackReservation.unit_list   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py RackReservation.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/racks.py RackReservation.to_objectchange   0% 3 3 0   100% 0 0   0%
dcim/models/racks.py (no function)   100% 133 0 0   100% 0 0   100%
dcim/models/sites.py Region.get_site_count   0% 1 1 0   100% 0 0   0%
dcim/models/sites.py SiteGroup.get_site_count   0% 1 1 0   100% 0 0   0%
dcim/models/sites.py Site.__str__   100% 1 0 0   100% 0 0   100%
dcim/models/sites.py Site.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/sites.py Location.get_status_color   0% 1 1 0   100% 0 0   0%
dcim/models/sites.py Location.clean   0% 3 3 0   0% 2 0   0%
dcim/models/sites.py (no function)   100% 77 0 0   100% 0 0   100%
dcim/object_actions.py BulkAddComponents.get_context   0% 1 1 0   100% 0 0   0%
dcim/object_actions.py (no function)   100% 16 0 0   100% 0 0   100%
dcim/search.py (no function)   100% 202 0 0   100% 0 0   100%
dcim/signals.py cache_presave_scope_fields   0% 5 5 0   0% 2 0   0%
dcim/signals.py _unwritten_scope_fields   0% 4 4 0   0% 2 0   0%
dcim/signals.py _scope_fields_unchanged   0% 5 5 0   0% 2 0   0%
dcim/signals.py _scope_values   0% 11 11 0   0% 6 0   0%
dcim/signals.py handle_location_site_change   0% 14 14 0   0% 6 0   0%
dcim/signals.py handle_rack_site_change   0% 9 9 0   0% 6 0   0%
dcim/signals.py assign_virtualchassis_master   20% 5 4 0   50% 2 1   29%
dcim/signals.py update_virtualchassis_member_search_cache   80% 5 1 0   75% 4 1   78%
dcim/signals.py update_connected_endpoints   0% 21 21 0   0% 18 0   0%
dcim/signals.py retrace_cable_paths   0% 2 2 0   0% 2 0   0%
dcim/signals.py update_passthrough_port_paths   0% 2 2 0   0% 2 0   0%
dcim/signals.py nullify_connected_endpoints   0% 29 29 0   0% 16 0   0%
dcim/signals.py update_channelized_cable_paths   47% 30 16 0   32% 22 7   40%
dcim/signals.py cleanup_channel_subinterface_paths   20% 5 4 0   25% 4 1   22%
dcim/signals.py update_mac_address_interface   33% 3 2 0   50% 2 1   40%
dcim/signals.py (no function)   100% 45 0 0   100% 2 0   100%
dcim/svg/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
dcim/svg/cables.py _cable_side_nodes   0% 2 2 0   100% 0 0   0%
dcim/svg/cables.py _cable_side_nodes.matches   0% 5 5 0   0% 4 0   0%
dcim/svg/cables.py Node.__init__   0% 13 13 0   0% 2 0   0%
dcim/svg/cables.py Node.box   0% 1 1 0   100% 0 0   0%
dcim/svg/cables.py Node.top_center   0% 1 1 0   100% 0 0   0%
dcim/svg/cables.py Node.bottom_center   0% 1 1 0   100% 0 0   0%
dcim/svg/cables.py Connector.__init__   0% 24 24 0   0% 6 0   0%
dcim/svg/cables.py CableTraceSVG.__init__   0% 7 7 0   100% 0 0   0%
dcim/svg/cables.py CableTraceSVG.center   0% 1 1 0   100% 0 0   0%
dcim/svg/cables.py CableTraceSVG._get_labels   0% 24 24 0   0% 18 0   0%
dcim/svg/cables.py CableTraceSVG._get_color   0% 7 7 0   0% 6 0   0%
dcim/svg/cables.py CableTraceSVG.draw_parent_objects   0% 9 9 0   0% 4 0   0%
dcim/svg/cables.py CableTraceSVG.draw_object_terminations   0% 7 7 0   0% 2 0   0%
dcim/svg/cables.py CableTraceSVG.draw_terminations   0% 11 11 0   0% 2 0   0%
dcim/svg/cables.py CableTraceSVG.draw_far_objects   0% 14 14 0   0% 2 0   0%
dcim/svg/cables.py CableTraceSVG.draw_fanin   0% 3 3 0   0% 2 0   0%
dcim/svg/cables.py CableTraceSVG.draw_fanout   0% 3 3 0   0% 2 0   0%
dcim/svg/cables.py CableTraceSVG.draw_attachment   0% 6 6 0   100% 0 0   0%
dcim/svg/cables.py CableTraceSVG.render   0% 76 76 0   0% 36 0   0%
dcim/svg/cables.py (no function)   100% 42 0 0   100% 0 0   100%
dcim/svg/racks.py get_device_name   0% 6 6 0   0% 4 0   0%
dcim/svg/racks.py get_device_description   0% 12 12 0   0% 6 0   0%
dcim/svg/racks.py truncate_text   0% 3 3 0   100% 0 0   0%
dcim/svg/racks.py RackElevationSVG.__init__   0% 21 21 0   0% 6 0   0%
dcim/svg/racks.py RackElevationSVG._add_gradient   0% 6 6 0   100% 0 0   0%
dcim/svg/racks.py RackElevationSVG._setup_drawing   0% 9 9 0   100% 0 0   0%
dcim/svg/racks.py RackElevationSVG._get_device_coords   0% 6 6 0   0% 2 0   0%
dcim/svg/racks.py RackElevationSVG._draw_device   0% 25 25 0   0% 4 0   0%
dcim/svg/racks.py RackElevationSVG.draw_device_front   0% 3 3 0   100% 0 0   0%
dcim/svg/racks.py RackElevationSVG.draw_device_rear   0% 2 2 0   100% 0 0   0%
dcim/svg/racks.py RackElevationSVG.draw_border   0% 4 4 0   100% 0 0   0%
dcim/svg/racks.py RackElevationSVG.draw_legend   0% 6 6 0   0% 2 0   0%
dcim/svg/racks.py RackElevationSVG.draw_margin   0% 10 10 0   0% 4 0   0%
dcim/svg/racks.py RackElevationSVG.draw_background   0% 11 11 0   0% 2 0   0%
dcim/svg/racks.py RackElevationSVG.draw_face   0% 11 11 0   0% 8 0   0%
dcim/svg/racks.py RackElevationSVG.render   0% 7 7 0   100% 0 0   0%
dcim/svg/racks.py (no function)   100% 41 0 0   100% 0 0   100%
dcim/tables/__init__.py (no function)   100% 9 0 0   100% 0 0   100%
dcim/tables/cables.py CableTerminationsColumn.__init__   100% 3 0 0   100% 0 0   100%
dcim/tables/cables.py CableTerminationsColumn._get_terminations   0% 8 8 0   0% 8 0   0%
dcim/tables/cables.py CableTerminationsColumn.render   0% 2 2 0   100% 0 0   0%
dcim/tables/cables.py CableTerminationsColumn.value   0% 1 1 0   100% 0 0   0%
dcim/tables/cables.py (no function)   100% 45 0 0   100% 0 0   100%
dcim/tables/connections.py (no function)   100% 28 0 0   100% 0 0   100%
dcim/tables/cooling.py (no function)   100% 87 0 0   100% 0 0   100%
dcim/tables/devices.py CableTerminationTable.value_link_peer   0% 1 1 0   100% 0 0   0%
dcim/tables/devices.py PathEndpointTable.value_connection   0% 8 8 0   0% 6 0   0%
dcim/tables/devices.py BaseInterfaceTable.value_ip_addresses   0% 1 1 0   100% 0 0   0%
dcim/tables/devices.py BaseInterfaceTable.value_tagged_vlans   0% 1 1 0   100% 0 0   0%
dcim/tables/devices.py InterfaceTable.value_connection   0% 4 4 0   0% 2 0   0%
dcim/tables/devices.py ModuleBayTable.render_parent_bay   0% 1 1 0   100% 0 0   0%
dcim/tables/devices.py ModuleBayTable.render_installed_module   0% 1 1 0   100% 0 0   0%
dcim/tables/devices.py MACAddressActionsColumn.render   0% 19 19 0   0% 8 0   0%
dcim/tables/devices.py (no function)   100% 360 0 0   100% 0 0   100%
dcim/tables/devicetypes.py (no function)   100% 125 0 0   100% 0 0   100%
dcim/tables/modules.py (no function)   100% 49 0 0   100% 0 0   100%
dcim/tables/power.py (no function)   100% 32 0 0   100% 0 0   100%
dcim/tables/racks.py (no function)   100% 81 0 0   100% 0 0   100%
dcim/tables/sites.py (no function)   100% 46 0 0   100% 0 0   100%
dcim/tables/template_code.py (no function)   100% 28 0 0   100% 0 0   100%
dcim/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
dcim/ui/panels.py BayTypeIncompatibilityPanel.should_render   0% 7 7 0   0% 4 0   0%
dcim/ui/panels.py BayTypeIncompatibilityPanel.get_context   0% 4 4 0   100% 0 0   0%
dcim/ui/panels.py ConnectionPanel.__init__   100% 4 0 0   100% 0 0   100%
dcim/ui/panels.py ConnectionPanel.get_context   0% 1 1 0   100% 0 0   0%
dcim/ui/panels.py VirtualChassisMembersPanel.get_context   0% 1 1 0   100% 0 0   0%
dcim/ui/panels.py VirtualChassisMembersPanel.should_render   0% 1 1 0   100% 0 0   0%
dcim/ui/panels.py PowerUtilizationPanel.get_context   0% 1 1 0   100% 0 0   0%
dcim/ui/panels.py PowerUtilizationPanel.should_render   0% 2 2 0   100% 0 0   0%
dcim/ui/panels.py InterfaceConnectionPanel.should_render   0% 2 2 0   100% 0 0   0%
dcim/ui/panels.py VirtualCircuitPanel.should_render   0% 4 4 0   0% 2 0   0%
dcim/ui/panels.py InterfaceWirelessPanel.should_render   0% 2 2 0   100% 0 0   0%
dcim/ui/panels.py WirelessLANsPanel.should_render   0% 2 2 0   100% 0 0   0%
dcim/ui/panels.py (no function)   100% 403 0 0   100% 0 0   100%
dcim/urls.py (no function)   100% 5 0 0   100% 0 0   100%
dcim/utils.py inherit_module_token   0% 3 3 0   0% 2 0   0%
dcim/utils.py get_module_bay_raw_positions   0% 10 10 0   0% 4 0   0%
dcim/utils.py resolve_position_chain   0% 5 5 0   0% 2 0   0%
dcim/utils.py get_module_bay_positions   0% 1 1 0   100% 0 0   0%
dcim/utils.py resolve_module_placeholder   0% 10 10 0   0% 8 0   0%
dcim/utils.py compile_path_node   0% 1 1 0   100% 0 0   0%
dcim/utils.py decompile_path_node   0% 2 2 0   100% 0 0   0%
dcim/utils.py object_to_path_node   0% 2 2 0   100% 0 0   0%
dcim/utils.py path_node_to_object   0% 3 3 0   100% 0 0   0%
dcim/utils.py create_cablepaths   0% 15 15 0   0% 14 0   0%
dcim/utils.py rebuild_paths   0% 7 7 0   0% 4 0   0%
dcim/utils.py rebuild_cable_paths   0% 28 28 0   0% 22 0   0%
dcim/utils.py update_interface_parents   33% 6 4 0   50% 2 1   38%
dcim/utils.py update_interface_bridges   29% 7 5 0   25% 4 1   27%
dcim/utils.py create_port_mappings   70% 10 3 0   50% 2 1   67%
dcim/utils.py reconcile_port_mappings   0% 13 13 0   0% 8 0   0%
dcim/utils.py reconcile_port_mappings.target   0% 2 2 0   100% 0 0   0%
dcim/utils.py (no function)   100% 22 0 0   100% 0 0   100%
dcim/views.py DeviceComponentsView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceTypeComponentsView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceTypeComponentsView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py ModuleTypeComponentsView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py ModuleTypeComponentsView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py BulkDisconnectView.__init__   0% 4 4 0   100% 0 0   0%
dcim/views.py BulkDisconnectView.get_required_permission   0% 1 1 0   100% 0 0   0%
dcim/views.py BulkDisconnectView.post   0% 19 19 0   0% 10 0   0%
dcim/views.py PathTraceView.dispatch   0% 3 3 0   100% 0 0   0%
dcim/views.py PathTraceView.get_extra_context   0% 20 20 0   0% 8 0   0%
dcim/views.py RegionView.get_extra_context   0% 2 2 0   100% 0 0   0%
dcim/views.py SiteGroupView.get_extra_context   0% 2 2 0   100% 0 0   0%
dcim/views.py SiteView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py LocationView.get_extra_context   0% 3 3 0   100% 0 0   0%
dcim/views.py RackGroupView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py RackRoleView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py RackTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py RackElevationListView.get   0% 20 20 0   0% 4 0   0%
dcim/views.py RackView.get_extra_context   0% 8 8 0   0% 2 0   0%
dcim/views.py RackRackReservationsView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py RackNonRackedView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py RackReservationEditView.alter_object   0% 5 5 0   0% 4 0   0%
dcim/views.py RackReservationImportView.save_object   0% 4 4 0   100% 0 0   0%
dcim/views.py ManufacturerView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceTypeListView.export_yaml   0% 2 2 0   100% 0 0   0%
dcim/views.py DeviceTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceTypeImportView.prep_related_object_data   0% 2 2 0   100% 0 0   0%
dcim/views.py ModuleTypeListView.export_yaml   0% 2 2 0   100% 0 0   0%
dcim/views.py ModuleTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py ModuleTypeEditView.post   0% 11 11 0   0% 4 0   0%
dcim/views.py ModuleTypeImportView.prep_related_object_data   0% 2 2 0   100% 0 0   0%
dcim/views.py ModuleTypeBulkEditView.post_save_operations   0% 9 9 0   0% 6 0   0%
dcim/views.py ModuleTypeBulkEditView.post   0% 5 5 0   0% 2 0   0%
dcim/views.py ModuleBayTemplateBulkEditView.post_save_operations   0% 7 7 0   0% 4 0   0%
dcim/views.py InventoryItemTemplateCreateView.alter_object   0% 6 6 0   0% 2 0   0%
dcim/views.py DeviceRoleView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py PlatformView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceView.get_extra_context   0% 4 4 0   0% 2 0   0%
dcim/views.py DeviceInterfacesView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceInventoryView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceVirtualMachinesView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py DeviceBulkImportView.save_object   0% 8 8 0   0% 2 0   0%
dcim/views.py ModuleView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py InterfaceView.get_extra_context   0% 15 15 0   0% 4 0   0%
dcim/views.py InterfaceBulkEditView.post_save_operations   0% 6 6 0   0% 6 0   0%
dcim/views.py FrontPortView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py RearPortView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py ModuleBayEditView.post   0% 10 10 0   0% 4 0   0%
dcim/views.py ModuleBayBulkEditView.post_save_operations   0% 9 9 0   0% 6 0   0%
dcim/views.py ModuleBayBulkEditView.post   0% 5 5 0   0% 2 0   0%
dcim/views.py DeviceBayPopulateView.get   0% 3 3 0   100% 0 0   0%
dcim/views.py DeviceBayPopulateView.post   0% 10 10 0   0% 2 0   0%
dcim/views.py DeviceBayDepopulateView.get   0% 3 3 0   100% 0 0   0%
dcim/views.py DeviceBayDepopulateView.post   0% 11 11 0   0% 2 0   0%
dcim/views.py InventoryItemChildrenView.get_children   0% 1 1 0   100% 0 0   0%
dcim/views.py InventoryItemRoleView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py CableBundleView.get_extra_context   0% 3 3 0   100% 0 0   0%
dcim/views.py CableEditView.alter_object   0% 9 9 0   0% 6 0   0%
dcim/views.py ConsoleConnectionsListView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py PowerConnectionsListView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py InterfaceConnectionsListView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py VirtualChassisView.get_extra_context   0% 2 2 0   100% 0 0   0%
dcim/views.py VirtualChassisEditView.get_required_permission   0% 1 1 0   100% 0 0   0%
dcim/views.py VirtualChassisEditView.get   0% 7 7 0   100% 0 0   0%
dcim/views.py VirtualChassisEditView.post   0% 21 21 0   0% 6 0   0%
dcim/views.py VirtualChassisAddMemberView.get_required_permission   0% 1 1 0   100% 0 0   0%
dcim/views.py VirtualChassisAddMemberView.get   0% 5 5 0   100% 0 0   0%
dcim/views.py VirtualChassisAddMemberView.post   0% 16 16 0   0% 6 0   0%
dcim/views.py VirtualChassisRemoveMemberView.get_required_permission   0% 1 1 0   100% 0 0   0%
dcim/views.py VirtualChassisRemoveMemberView.get   0% 3 3 0   100% 0 0   0%
dcim/views.py VirtualChassisRemoveMemberView.post   0% 16 16 0   0% 4 0   0%
dcim/views.py PowerPanelView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py CoolingSourceView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py VirtualDeviceContextView.get_extra_context   0% 1 1 0   100% 0 0   0%
dcim/views.py MACAddressSetPrimaryView.get   0% 2 2 0   100% 0 0   0%
dcim/views.py MACAddressSetPrimaryView.post   0% 17 17 0   0% 4 0   0%
dcim/views.py (no function)   100% 2464 0 0   100% 0 0   100%
extras/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/api/customfields.py CustomFieldDefaultValues.__call__   57% 7 3 0   25% 4 1   45%
extras/api/customfields.py CustomFieldsDataField._get_custom_fields   100% 3 0 0   100% 2 0   100%
extras/api/customfields.py CustomFieldsDataField.to_representation   21% 24 19 0   7% 14 1   16%
extras/api/customfields.py CustomFieldsDataField.to_internal_value   45% 22 12 0   50% 14 1   47%
extras/api/customfields.py CustomFieldListSerializer.to_representation   41% 17 10 0   25% 12 1   34%
extras/api/customfields.py (no function)   100% 21 0 0   100% 0 0   100%
extras/api/mixins.py SharedObjectQuerySetMixin.get_queryset   100% 1 0 0   100% 0 0   100%
extras/api/mixins.py ConfigContextQuerySetMixin.get_queryset   100% 4 0 0   100% 2 0   100%
extras/api/mixins.py ConfigTemplateRenderMixin.render_configtemplate   0% 11 11 0   0% 4 0   0%
extras/api/mixins.py RenderConfigMixin.get_permissions   100% 3 0 0   100% 2 0   100%
extras/api/mixins.py RenderConfigMixin.render_config   73% 15 4 0   75% 4 1   74%
extras/api/mixins.py (no function)   100% 22 0 0   100% 0 0   100%
extras/api/routers.py ScriptRouter.get_routes   100% 7 0 0   100% 2 0   100%
extras/api/routers.py (no function)   100% 6 0 0   100% 0 0   100%
extras/api/serializers.py (no function)   100% 15 0 0   100% 0 0   100%
extras/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/api/serializers_/attachments.py ImageAttachmentSerializer.validate   0% 6 6 0   100% 0 0   0%
extras/api/serializers_/attachments.py (no function)   100% 19 0 0   100% 0 0   100%
extras/api/serializers_/bookmarks.py (no function)   100% 15 0 0   100% 0 0   100%
extras/api/serializers_/configcontexts.py (no function)   100% 46 0 0   100% 0 0   100%
extras/api/serializers_/configtemplates.py RenderConfigInputSerializerExtension.map_serializer   100% 3 0 0   100% 0 0   100%
extras/api/serializers_/configtemplates.py (no function)   100% 25 0 0   100% 0 0   100%
extras/api/serializers_/customfields.py CustomFieldSerializer.validate_type   0% 3 3 0   0% 2 0   0%
extras/api/serializers_/customfields.py CustomFieldSerializer.get_data_type   0% 12 12 0   0% 10 0   0%
extras/api/serializers_/customfields.py (no function)   100% 37 0 0   100% 0 0   100%
extras/api/serializers_/customlinks.py (no function)   100% 12 0 0   100% 0 0   100%
extras/api/serializers_/dashboard.py (no function)   100% 7 0 0   100% 0 0   100%
extras/api/serializers_/events.py EventRuleSerializer.get_fields   100% 4 0 0   50% 2 1   83%
extras/api/serializers_/events.py (no function)   100% 26 0 0   100% 0 0   100%
extras/api/serializers_/exporttemplates.py (no function)   100% 16 0 0   100% 0 0   100%
extras/api/serializers_/journaling.py JournalEntrySerializer.get_fields   100% 4 0 0   100% 2 0   100%
extras/api/serializers_/journaling.py JournalEntrySerializer.validate   0% 6 6 0   0% 2 0   0%
extras/api/serializers_/journaling.py (no function)   100% 21 0 0   100% 0 0   100%
extras/api/serializers_/notifications.py (no function)   100% 31 0 0   100% 0 0   100%
extras/api/serializers_/savedfilters.py (no function)   100% 12 0 0   100% 0 0   100%
extras/api/serializers_/scripts.py ScriptModuleSerializer.validate   65% 20 7 0   30% 10 3   53%
extras/api/serializers_/scripts.py ScriptModuleSerializer.create   0% 18 18 0   0% 2 0   0%
extras/api/serializers_/scripts.py ScriptModuleSerializer.update   0% 15 15 0   0% 2 0   0%
extras/api/serializers_/scripts.py ScriptSerializer.get_vars   0% 3 3 0   0% 2 0   0%
extras/api/serializers_/scripts.py ScriptSerializer.get_display   0% 1 1 0   100% 0 0   0%
extras/api/serializers_/scripts.py ScriptSerializer.get_description   0% 3 3 0   0% 2 0   0%
extras/api/serializers_/scripts.py ScriptDetailSerializer.get_result   0% 4 4 0   100% 0 0   0%
extras/api/serializers_/scripts.py ScriptInputSerializer.__init__   75% 4 1 0   50% 2 1   67%
extras/api/serializers_/scripts.py ScriptInputSerializer.validate_data   0% 3 3 0   0% 2 0   0%
extras/api/serializers_/scripts.py ScriptInputSerializer.validate_schedule_at   0% 6 6 0   0% 6 0   0%
extras/api/serializers_/scripts.py ScriptInputSerializer.validate_interval   0% 3 3 0   0% 2 0   0%
extras/api/serializers_/scripts.py ScriptInputSerializer.validate   0% 3 3 0   0% 2 0   0%
extras/api/serializers_/scripts.py (no function)   100% 53 0 0   100% 0 0   100%
extras/api/serializers_/tableconfigs.py (no function)   100% 11 0 0   100% 0 0   100%
extras/api/serializers_/tags.py TaggedItemSerializer.get_object   0% 6 6 0   100% 0 0   0%
extras/api/serializers_/tags.py (no function)   100% 27 0 0   100% 0 0   100%
extras/api/urls.py (no function)   100% 28 0 0   100% 0 0   100%
extras/api/views.py ExtrasRootView.get_view_name   0% 1 1 0   100% 0 0   0%
extras/api/views.py CustomFieldChoiceSetViewSet.choices   11% 9 8 0   0% 4 0   8%
extras/api/views.py ConfigTemplateViewSet.get_permissions   100% 3 0 0   100% 2 0   100%
extras/api/views.py ConfigTemplateViewSet.render   50% 4 2 0   100% 0 0   50%
extras/api/views.py ScriptModuleViewSet.get_object   71% 7 2 0   100% 2 0   78%
extras/api/views.py ScriptViewSet.get_serializer   100% 4 0 0   100% 2 0   100%
extras/api/views.py ScriptViewSet.get_serializer_context   100% 3 0 0   100% 0 0   100%
extras/api/views.py ScriptViewSet._get_script   82% 11 2 0   100% 2 0   85%
extras/api/views.py ScriptViewSet.retrieve   33% 3 2 0   100% 0 0   33%
extras/api/views.py ScriptViewSet.run   13% 31 27 0   14% 14 2   13%
extras/api/views.py DashboardView.get_object   100% 1 0 0   100% 0 0   100%
extras/api/views.py (no function)   100% 144 0 0   100% 0 0   100%
extras/apps.py ExtrasConfig.ready   100% 8 0 0   100% 0 0   100%
extras/apps.py (no function)   100% 4 0 0   100% 0 0   100%
extras/cache.py invalidate_config_context_for_objects   89% 9 1 0   75% 4 1   85%
extras/cache.py invalidate_config_context_for_configcontext   0% 2 2 0   0% 2 0   0%
extras/cache.py invalidate_for_scope_delta   76% 33 8 0   55% 20 7   68%
extras/cache.py (no function)   100% 11 0 0   100% 0 0   100%
extras/choices.py (no function)   100% 110 0 0   100% 0 0   100%
extras/conditions.py AbsentData.copy   0% 1 1 0   100% 0 0   0%
extras/conditions.py walk_path   0% 22 22 0   0% 20 0   0%
extras/conditions.py is_ruleset   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.__init__   0% 19 19 0   0% 14 0   0%
extras/conditions.py Condition._resolve_attr   0% 7 7 0   0% 2 0   0%
extras/conditions.py Condition._references_absent_payload   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition._references_absent_snapshot   0% 19 19 0   0% 12 0   0%
extras/conditions.py Condition._resolve_snapshot_attrs   0% 24 24 0   0% 8 0   0%
extras/conditions.py Condition.eval   0% 19 19 0   0% 10 0   0%
extras/conditions.py Condition.eval_eq   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_neq   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_gt   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_gte   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_lt   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_lte   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_in   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_contains   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_regex   0% 1 1 0   100% 0 0   0%
extras/conditions.py Condition.eval_changed   0% 2 2 0   100% 0 0   0%
extras/conditions.py Condition.eval_unchanged   0% 2 2 0   100% 0 0   0%
extras/conditions.py ConditionSet.__init__   0% 12 12 0   0% 6 0   0%
extras/conditions.py ConditionSet.eval   0% 2 2 0   100% 0 0   0%
extras/conditions.py (no function)   100% 48 0 0   100% 0 0   100%
extras/constants.py (no function)   100% 14 0 0   100% 0 0   100%
extras/dashboard/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
extras/dashboard/forms.py get_widget_choices   0% 1 1 0   100% 0 0   0%
extras/dashboard/forms.py (no function)   100% 14 0 0   100% 0 0   100%
extras/dashboard/utils.py register_widget   100% 4 0 0   100% 0 0   100%
extras/dashboard/utils.py get_widget_class   0% 4 4 0   100% 0 0   0%
extras/dashboard/utils.py get_dashboard   0% 9 9 0   0% 2 0   0%
extras/dashboard/utils.py get_default_dashboard   0% 8 8 0   0% 2 0   0%
extras/dashboard/utils.py (no function)   100% 11 0 0   100% 0 0   100%
extras/dashboard/widgets.py get_object_type_choices   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py object_list_widget_supports_model   0% 3 3 0   100% 0 0   0%
extras/dashboard/widgets.py object_list_widget_supports_model.can_resolve_model_list_view   0% 5 5 0   100% 0 0   0%
extras/dashboard/widgets.py get_bookmarks_object_type_choices   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py get_models_from_content_types   0% 11 11 0   0% 4 0   0%
extras/dashboard/widgets.py DashboardWidget.__init__   0% 9 9 0   0% 4 0   0%
extras/dashboard/widgets.py DashboardWidget.__str__   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py DashboardWidget.set_layout   0% 4 4 0   100% 0 0   0%
extras/dashboard/widgets.py DashboardWidget.render   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py DashboardWidget.name   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py DashboardWidget.form_data   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py NoteWidget.render   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py ObjectCountsWidget.ConfigForm.clean_filters   0% 6 6 0   0% 2 0   0%
extras/dashboard/widgets.py ObjectCountsWidget.render   0% 21 21 0   0% 6 0   0%
extras/dashboard/widgets.py ObjectListWidget.ConfigForm.clean_url_params   0% 6 6 0   0% 2 0   0%
extras/dashboard/widgets.py ObjectListWidget.ConfigForm.clean_model   0% 6 6 0   0% 4 0   0%
extras/dashboard/widgets.py ObjectListWidget.render   0% 21 21 0   0% 6 0   0%
extras/dashboard/widgets.py RSSFeedWidget.render   0% 1 1 0   100% 0 0   0%
extras/dashboard/widgets.py RSSFeedWidget.cache_key   0% 3 3 0   100% 0 0   0%
extras/dashboard/widgets.py RSSFeedWidget.get_feed   0% 16 16 0   0% 6 0   0%
extras/dashboard/widgets.py RSSFeedWidget.sanitize_entries   0% 8 8 0   0% 8 0   0%
extras/dashboard/widgets.py BookmarksWidget.render   0% 16 16 0   0% 10 0   0%
extras/dashboard/widgets.py (no function)   100% 112 0 0   100% 0 0   100%
extras/data/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
extras/data/iata.py (no function)   100% 1 0 0   100% 0 0   100%
extras/data/iso_3166.py (no function)   100% 1 0 0   100% 0 0   100%
extras/data/un_locode.py (no function)   100% 1 0 0   100% 0 0   100%
extras/event_rules.py WebhookAction.enqueue   0% 6 6 0   0% 2 0   0%
extras/event_rules.py WebhookAction.resolve_import_object   0% 1 1 0   100% 0 0   0%
extras/event_rules.py ScriptAction.enqueue   0% 11 11 0   0% 4 0   0%
extras/event_rules.py ScriptAction.resolve_import_object   0% 3 3 0   100% 0 0   0%
extras/event_rules.py NotificationAction.enqueue   0% 1 1 0   100% 0 0   0%
extras/event_rules.py NotificationAction.resolve_import_object   0% 1 1 0   100% 0 0   0%
extras/event_rules.py (no function)   100% 38 0 0   100% 0 0   100%
extras/events.py EventContext.__init__   100% 4 0 0   50% 2 1   83%
extras/events.py EventContext.refresh_serialization_source   0% 3 3 0   0% 2 0   0%
extras/events.py EventContext.freeze_data   100% 2 0 0   100% 0 0   100%
extras/events.py EventContext.__getitem__   50% 4 2 0   50% 2 1   50%
extras/events.py serialize_for_event   100% 4 0 0   100% 0 0   100%
extras/events.py get_snapshots   62% 8 3 0   50% 6 1   57%
extras/events.py enqueue_event   67% 15 5 0   60% 10 2   64%
extras/events.py process_event_rules   7% 30 28 0   6% 18 1   6%
extras/events.py process_event_queue   100% 8 0 0   100% 4 0   100%
extras/events.py flush_events   71% 7 2 0   75% 4 1   73%
extras/events.py (no function)   100% 24 0 0   100% 0 0   100%
extras/fields.py ChoiceSetField.__init__   100% 2 0 0   100% 0 0   100%
extras/fields.py ChoiceSetField.deconstruct   100% 3 0 0   100% 0 0   100%
extras/fields.py (no function)   100% 8 0 0   100% 0 0   100%
extras/filters.py MissingKeyAwareFilterMixin.__init__   0% 3 3 0   0% 2 0   0%
extras/filters.py MissingKeyAwareFilterMixin.filter   0% 15 15 0   0% 8 0   0%
extras/filters.py missing_key_aware_filter_factory   0% 3 3 0   0% 2 0   0%
extras/filters.py TagFilter.__init__   100% 5 0 0   100% 0 0   100%
extras/filters.py TagIDFilter.__init__   100% 5 0 0   100% 0 0   100%
extras/filters.py (no function)   100% 14 0 0   100% 0 0   100%
extras/filtersets.py ScriptFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py WebhookFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py EventRuleFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py EventRuleFilterSet.filter_event_type   0% 1 1 0   100% 0 0   0%
extras/filtersets.py EventRuleFilterSet.filter_action_is_available   100% 4 0 0   100% 2 0   100%
extras/filtersets.py CustomFieldFilterSet.search   67% 3 1 0   50% 2 1   60%
extras/filtersets.py CustomFieldChoiceSetFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py CustomFieldChoiceSetFilterSet.filter_by_choice   0% 1 1 0   100% 0 0   0%
extras/filtersets.py CustomFieldChoiceSetFilterSet.filter_by_choice_colors   0% 13 13 0   0% 12 0   0%
extras/filtersets.py CustomLinkFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py ExportTemplateFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py SavedFilterFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py SavedFilterFilterSet._usable   0% 8 8 0   0% 6 0   0%
extras/filtersets.py TableConfigFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py TableConfigFilterSet._usable   0% 8 8 0   0% 6 0   0%
extras/filtersets.py NotificationGroupFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py ImageAttachmentFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py JournalEntryFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py TagFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py TagFilterSet._content_type   0% 9 9 0   0% 2 0   0%
extras/filtersets.py TagFilterSet._content_type_id   0% 2 2 0   100% 0 0   0%
extras/filtersets.py TagFilterSet._for_object_type   0% 1 1 0   100% 0 0   0%
extras/filtersets.py TaggedItemFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py ConfigContextProfileFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py ConfigContextFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py ConfigTemplateFilterSet.search   0% 3 3 0   0% 2 0   0%
extras/filtersets.py LocalConfigContextFilterSet._local_context_data   0% 1 1 0   100% 0 0   0%
extras/filtersets.py (no function)   100% 245 0 0   100% 0 0   100%
extras/forms/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
extras/forms/bulk_edit.py (no function)   100% 124 0 0   100% 0 0   100%
extras/forms/bulk_import.py CustomFieldChoiceSetImportForm.clean_extra_choices   0% 12 12 0   0% 4 0   0%
extras/forms/bulk_import.py CustomFieldChoiceSetImportForm.clean_choice_colors   0% 15 15 0   0% 6 0   0%
extras/forms/bulk_import.py ExportTemplateImportForm.clean_data_source   0% 4 4 0   0% 2 0   0%
extras/forms/bulk_import.py ExportTemplateImportForm.clean   0% 6 6 0   0% 2 0   0%
extras/forms/bulk_import.py ConfigTemplateImportForm.clean_data_source   0% 4 4 0   0% 2 0   0%
extras/forms/bulk_import.py ConfigTemplateImportForm.clean   0% 4 4 0   0% 2 0   0%
extras/forms/bulk_import.py EventRuleImportForm.clean   0% 24 24 0   0% 12 0   0%
extras/forms/bulk_import.py EventRuleImportForm._update_errors   0% 7 7 0   0% 4 0   0%
extras/forms/bulk_import.py JournalEntryImportForm.__init__   0% 3 3 0   0% 2 0   0%
extras/forms/bulk_import.py (no function)   100% 102 0 0   100% 0 0   100%
extras/forms/filtersets.py (no function)   100% 153 0 0   100% 0 0   100%
extras/forms/misc.py (no function)   100% 5 0 0   100% 0 0   100%
extras/forms/model_forms.py CustomFieldForm.__init__   0% 22 22 0   0% 12 0   0%
extras/forms/model_forms.py CustomFieldChoiceSetForm.__init__   0% 23 23 0   0% 16 0   0%
extras/forms/model_forms.py CustomFieldChoiceSetForm.clean_extra_choices   0% 12 12 0   0% 4 0   0%
extras/forms/model_forms.py CustomFieldChoiceSetForm.clean_choice_colors   0% 15 15 0   0% 6 0   0%
extras/forms/model_forms.py ExportTemplateForm.__init__   0% 4 4 0   0% 2 0   0%
extras/forms/model_forms.py ExportTemplateForm.clean   0% 4 4 0   0% 2 0   0%
extras/forms/model_forms.py SavedFilterForm.__init__   0% 4 4 0   0% 4 0   0%
extras/forms/model_forms.py TableConfigForm.__init__   0% 23 23 0   0% 8 0   0%
extras/forms/model_forms.py TableConfigForm._get_columns   0% 8 8 0   0% 6 0   0%
extras/forms/model_forms.py NotificationGroupForm.clean   0% 4 4 0   0% 2 0   0%
extras/forms/model_forms.py EventRuleForm.init_action_choice   0% 11 11 0   0% 6 0   0%
extras/forms/model_forms.py EventRuleForm.__init__   0% 4 4 0   100% 0 0   0%
extras/forms/model_forms.py EventRuleForm.clean   0% 10 10 0   0% 4 0   0%
extras/forms/model_forms.py ConfigContextForm.__init__   0% 7 7 0   0% 6 0   0%
extras/forms/model_forms.py ConfigContextForm.clean   0% 4 4 0   0% 2 0   0%
extras/forms/model_forms.py ConfigTemplateForm.__init__   0% 4 4 0   0% 2 0   0%
extras/forms/model_forms.py ConfigTemplateForm.clean   0% 4 4 0   0% 2 0   0%
extras/forms/model_forms.py (no function)   100% 190 0 0   100% 0 0   100%
extras/forms/reports.py ReportForm.__init__   0% 6 6 0   0% 2 0   0%
extras/forms/reports.py ReportForm.clean   0% 6 6 0   0% 4 0   0%
extras/forms/reports.py (no function)   0% 11 11 0   100% 0 0   0%
extras/forms/scripts.py ScriptForm.__init__   0% 6 6 0   0% 2 0   0%
extras/forms/scripts.py ScriptForm.clean   0% 8 8 0   0% 6 0   0%
extras/forms/scripts.py ScriptFileForm.clean   0% 14 14 0   0% 4 0   0%
extras/forms/scripts.py ScriptFileForm.save   0% 7 7 0   0% 2 0   0%
extras/forms/scripts.py (no function)   100% 19 0 0   100% 0 0   100%
extras/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/graphql/enums.py (no function)   100% 17 0 0   100% 0 0   100%
extras/graphql/filter_lookups.py ExtraChoicesLookup.filter   0% 5 5 0   0% 4 0   0%
extras/graphql/filter_lookups.py (no function)   100% 12 0 0   100% 0 0   100%
extras/graphql/filter_mixins.py (no function)   90% 20 2 0   50% 2 1   86%
extras/graphql/filters.py CustomFieldChoiceSetFilter.choice_colors   0% 14 14 0   0% 12 0   0%
extras/graphql/filters.py (no function)   96% 209 9 0   50% 2 1   95%
extras/graphql/mixins.py ConfigContextMixin.get_queryset   0% 5 5 0   0% 2 0   0%
extras/graphql/mixins.py ConfigContextMixin.config_context   0% 1 1 0   100% 0 0   0%
extras/graphql/mixins.py CustomFieldsMixin.custom_fields   0% 1 1 0   100% 0 0   0%
extras/graphql/mixins.py ImageAttachmentsMixin.image_attachments   0% 1 1 0   100% 0 0   0%
extras/graphql/mixins.py JournalEntriesMixin.journal_entries   0% 1 1 0   100% 0 0   0%
extras/graphql/mixins.py (no function)   94% 33 2 0   50% 2 1   91%
extras/graphql/schema.py (no function)   100% 39 0 0   100% 0 0   100%
extras/graphql/types.py SharedObjectMixin.get_queryset   0% 2 2 0   100% 0 0   0%
extras/graphql/types.py (no function)   93% 57 4 0   50% 2 1   92%
extras/jobs.py RenderConfigContextJob.run   0% 10 10 0   0% 4 0   0%
extras/jobs.py RenderConfigContextJob._render_for_model   0% 12 12 0   0% 4 0   0%
extras/jobs.py provision_custom_field   0% 10 10 0   0% 2 0   0%
extras/jobs.py purge_custom_field   0% 8 8 0   0% 2 0   0%
extras/jobs.py CustomFieldDataJob.enqueue_for   0% 1 1 0   100% 0 0   0%
extras/jobs.py CustomFieldProvisioningJob.run   0% 3 3 0   0% 2 0   0%
extras/jobs.py CustomFieldPurgeJob.run   0% 3 3 0   0% 2 0   0%
extras/jobs.py ScriptJob.enqueue   0% 5 5 0   0% 2 0   0%
extras/jobs.py ScriptJob.run_script   0% 37 37 0   0% 16 0   0%
extras/jobs.py ScriptJob.run   0% 19 19 0   0% 10 0   0%
extras/jobs.py (no function)   100% 47 0 0   100% 0 0   100%
extras/lookups.py RangeContains.as_sql   0% 8 8 0   0% 2 0   0%
extras/lookups.py ChoiceValueLookup.as_sql   0% 3 3 0   100% 0 0   0%
extras/lookups.py Empty.as_sql   100% 4 0 0   100% 2 0   100%
extras/lookups.py JSONEmpty.as_sql   0% 8 8 0   0% 2 0   0%
extras/lookups.py NetHost.as_sql   0% 4 4 0   100% 0 0   0%
extras/lookups.py NetContainsOrEquals.as_sql   0% 4 4 0   100% 0 0   0%
extras/lookups.py CollatedCaseInsensitiveMixin.process_rhs   100% 5 0 0   100% 2 0   100%
extras/lookups.py (no function)   100% 49 0 0   100% 0 0   100%
extras/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/management/commands/populate_image_sizes.py Command.handle   0% 31 31 0   0% 20 0   0%
extras/management/commands/populate_image_sizes.py (no function)   0% 6 6 0   100% 0 0   0%
extras/management/commands/rebuild_config_context_cache.py Command.add_arguments   0% 1 1 0   100% 0 0   0%
extras/management/commands/rebuild_config_context_cache.py Command.handle   0% 14 14 0   0% 6 0   0%
extras/management/commands/rebuild_config_context_cache.py (no function)   0% 8 8 0   100% 0 0   0%
extras/management/commands/reindex.py Command.add_arguments   100% 2 0 0   100% 0 0   100%
extras/management/commands/reindex.py Command._get_indexers   25% 20 15 0   21% 14 1   24%
extras/management/commands/reindex.py Command.handle   68% 31 10 0   56% 16 5   64%
extras/management/commands/reindex.py (no function)   100% 10 0 0   100% 0 0   100%
extras/management/commands/renaturalize.py Command.add_arguments   0% 1 1 0   100% 0 0   0%
extras/management/commands/renaturalize.py Command._get_models   0% 25 25 0   0% 12 0   0%
extras/management/commands/renaturalize.py Command.handle   0% 27 27 0   0% 20 0   0%
extras/management/commands/renaturalize.py (no function)   0% 9 9 0   100% 0 0   0%
extras/management/commands/runscript.py Command.add_arguments   0% 5 5 0   100% 0 0   0%
extras/management/commands/runscript.py Command.handle   0% 43 43 0   0% 10 0   0%
extras/management/commands/runscript.py (no function)   0% 14 14 0   100% 0 0   0%
extras/management/commands/webhook_receiver.py WebhookHandler.__getattr__   0% 3 3 0   0% 2 0   0%
extras/management/commands/webhook_receiver.py WebhookHandler.log_message   0% 1 1 0   100% 0 0   0%
extras/management/commands/webhook_receiver.py WebhookHandler.do_ANY   0% 17 17 0   0% 8 0   0%
extras/management/commands/webhook_receiver.py Command.add_arguments   0% 2 2 0   100% 0 0   0%
extras/management/commands/webhook_receiver.py Command.handle   0% 9 9 0   100% 0 0   0%
extras/management/commands/webhook_receiver.py (no function)   0% 15 15 0   100% 0 0   0%
extras/managers.py NetBoxTaggableManager.add   0% 14 14 0   0% 4 0   0%
extras/managers.py NetBoxTaggableManager.set_base   0% 6 6 0   0% 2 0   0%
extras/managers.py NetBoxTaggableManagerField.contribute_to_class   100% 3 0 0   100% 2 0   100%
extras/managers.py NetBoxTaggableManagerField.deconstruct   0% 3 3 0   100% 0 0   0%
extras/managers.py (no function)   100% 13 0 0   100% 0 0   100%
extras/models/__init__.py (no function)   100% 8 0 0   100% 0 0   100%
extras/models/configs.py ConfigContextProfile.__str__   100% 1 0 0   100% 0 0   100%
extras/models/configs.py ConfigContextProfile.sync_data   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigContext.__str__   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigContext.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigContext.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigContext.clean   0% 8 8 0   0% 4 0   0%
extras/models/configs.py ConfigContext.sync_data   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigContext.get_affected_objects   0% 4 4 0   100% 0 0   0%
extras/models/configs.py ConfigContext._get_affected_object_filters   0% 37 37 0   0% 20 0   0%
extras/models/configs.py ConfigContext._get_affected_object_filters._nested_scope_q   0% 7 7 0   0% 4 0   0%
extras/models/configs.py ConfigContext._get_affected_object_filters._direct_pks   0% 2 2 0   100% 0 0   0%
extras/models/configs.py ConfigContextModel.get_config_context   75% 4 1 0   50% 2 1   67%
extras/models/configs.py ConfigContextModel.render_config_context   78% 9 2 0   67% 6 2   73%
extras/models/configs.py ConfigContextModel.clean   67% 3 1 0   50% 2 1   60%
extras/models/configs.py ConfigContextModel.serialize_object   100% 5 0 0   75% 4 1   89%
extras/models/configs.py ConfigTemplate.__str__   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigTemplate.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigTemplate.sync_data   0% 1 1 0   100% 0 0   0%
extras/models/configs.py ConfigTemplate.get_environment_params   0% 3 3 0   100% 0 0   0%
extras/models/configs.py ConfigTemplate.format_render_error   0% 19 19 0   0% 14 0   0%
extras/models/configs.py (no function)   100% 95 0 0   100% 0 0   100%
extras/models/customfields.py CustomFieldManager.get_for_model   100% 8 0 0   100% 4 0   100%
extras/models/customfields.py CustomFieldManager.get_defaults_for_model   100% 2 0 0   100% 0 0   100%
extras/models/customfields.py CustomFieldManager.clear_cache   0% 2 2 0   0% 2 0   0%
extras/models/customfields.py CustomField.__str__   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.__init__   0% 2 2 0   100% 0 0   0%
extras/models/customfields.py CustomField.search_type   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.choices   0% 3 3 0   0% 2 0   0%
extras/models/customfields.py CustomField.get_status_color   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.get_ui_visible_color   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.get_ui_editable_color   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.get_choice_label   0% 3 3 0   0% 2 0   0%
extras/models/customfields.py CustomField.get_choice_color   0% 3 3 0   0% 2 0   0%
extras/models/customfields.py CustomField.resolve_selection_value   0% 7 7 0   0% 6 0   0%
extras/models/customfields.py CustomField.data_lock_key   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField._try_lock_data   0% 3 3 0   100% 0 0   0%
extras/models/customfields.py CustomField._lock_status   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField._update_object_data   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField._exceeds_inline_limit   0% 8 8 0   0% 6 0   0%
extras/models/customfields.py CustomField.provision_data   0% 18 18 0   0% 8 0   0%
extras/models/customfields.py CustomField.remove_data   0% 8 8 0   0% 4 0   0%
extras/models/customfields.py CustomField.populate_initial_data   0% 6 6 0   0% 6 0   0%
extras/models/customfields.py CustomField.remove_stale_data   0% 3 3 0   0% 4 0   0%
extras/models/customfields.py CustomField.rename_object_data   0% 3 3 0   0% 4 0   0%
extras/models/customfields.py CustomField.delete   0% 20 20 0   0% 8 0   0%
extras/models/customfields.py CustomField._delete_row   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomField.clean   0% 38 38 0   0% 36 0   0%
extras/models/customfields.py CustomField.serialize   0% 13 13 0   0% 12 0   0%
extras/models/customfields.py CustomField.deserialize   0% 19 19 0   0% 10 0   0%
extras/models/customfields.py CustomField.to_form_field   0% 68 68 0   0% 46 0   0%
extras/models/customfields.py CustomField.to_filter   0% 37 37 0   0% 30 0   0%
extras/models/customfields.py CustomField.validate   0% 67 67 0   0% 66 0   0%
extras/models/customfields.py CustomFieldChoiceSet.__str__   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomFieldChoiceSet.__init__   0% 2 2 0   100% 0 0   0%
extras/models/customfields.py CustomFieldChoiceSet.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomFieldChoiceSet.choices   0% 9 9 0   0% 8 0   0%
extras/models/customfields.py CustomFieldChoiceSet.colors   0% 8 8 0   0% 6 0   0%
extras/models/customfields.py CustomFieldChoiceSet.get_choice_color   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomFieldChoiceSet.choices_count   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomFieldChoiceSet.values   0% 1 1 0   100% 0 0   0%
extras/models/customfields.py CustomFieldChoiceSet.clean   0% 39 39 0   0% 36 0   0%
extras/models/customfields.py CustomFieldChoiceSet.save   0% 3 3 0   0% 2 0   0%
extras/models/customfields.py (no function)   100% 141 0 0   100% 0 0   100%
extras/models/dashboard.py Dashboard.get_widget   0% 4 4 0   100% 0 0   0%
extras/models/dashboard.py Dashboard.get_layout   0% 6 6 0   0% 2 0   0%
extras/models/dashboard.py Dashboard.add_widget   0% 3 3 0   100% 0 0   0%
extras/models/dashboard.py Dashboard.delete_widget   0% 3 3 0   100% 0 0   0%
extras/models/dashboard.py (no function)   100% 15 0 0   100% 0 0   100%
extras/models/mixins.py CustomStoragesLoader.__init__   0% 1 1 0   100% 0 0   0%
extras/models/mixins.py CustomStoragesLoader.create_module   0% 1 1 0   100% 0 0   0%
extras/models/mixins.py CustomStoragesLoader.exec_module   0% 3 3 0   100% 0 0   0%
extras/models/mixins.py PythonModuleMixin.get_jobs   0% 1 1 0   100% 0 0   0%
extras/models/mixins.py PythonModuleMixin.path   0% 1 1 0   100% 0 0   0%
extras/models/mixins.py PythonModuleMixin.python_name   0% 5 5 0   0% 2 0   0%
extras/models/mixins.py PythonModuleMixin.get_module   0% 9 9 0   0% 2 0   0%
extras/models/mixins.py RenderTemplateMixin.get_context   0% 15 15 0   0% 10 0   0%
extras/models/mixins.py RenderTemplateMixin.clean   0% 11 11 0   0% 10 0   0%
extras/models/mixins.py RenderTemplateMixin._filter_environment_params   0% 1 1 0   100% 0 0   0%
extras/models/mixins.py RenderTemplateMixin._resolve_mapped_params   0% 7 7 0   0% 4 0   0%
extras/models/mixins.py RenderTemplateMixin._resolve_finalize   0% 3 3 0   0% 2 0   0%
extras/models/mixins.py RenderTemplateMixin.get_environment_params   0% 5 5 0   100% 0 0   0%
extras/models/mixins.py RenderTemplateMixin.render   0% 6 6 0   100% 0 0   0%
extras/models/mixins.py RenderTemplateMixin.render_to_response   0% 15 15 0   0% 8 0   0%
extras/models/mixins.py (no function)   100% 50 0 0   100% 0 0   100%
extras/models/models.py EventRule.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py EventRule.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py EventRule.action_provider   0% 1 1 0   100% 0 0   0%
extras/models/models.py EventRule.action_is_available   0% 1 1 0   100% 0 0   0%
extras/models/models.py EventRule.get_action_type_display   0% 3 3 0   0% 2 0   0%
extras/models/models.py EventRule.get_action_type_color   0% 1 1 0   100% 0 0   0%
extras/models/models.py EventRule.clean   0% 10 10 0   0% 6 0   0%
extras/models/models.py EventRule.eval_conditions   0% 10 10 0   0% 2 0   0%
extras/models/models.py Webhook.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py Webhook.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py Webhook.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py Webhook.clean   46% 24 13 0   36% 14 5   42%
extras/models/models.py Webhook.render_headers   0% 10 10 0   0% 6 0   0%
extras/models/models.py Webhook.render_body   0% 3 3 0   0% 2 0   0%
extras/models/models.py Webhook.render_payload_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py CustomLink.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py CustomLink.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py CustomLink.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py CustomLink.render   0% 12 12 0   0% 4 0   0%
extras/models/models.py ExportTemplate.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py ExportTemplate.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py ExportTemplate.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py ExportTemplate.clean   0% 3 3 0   0% 2 0   0%
extras/models/models.py ExportTemplate.sync_data   0% 1 1 0   100% 0 0   0%
extras/models/models.py ExportTemplate.get_context   0% 3 3 0   100% 0 0   0%
extras/models/models.py SavedFilter.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py SavedFilter.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py SavedFilter.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py SavedFilter.clean   0% 3 3 0   0% 2 0   0%
extras/models/models.py SavedFilter.url_params   0% 2 2 0   100% 0 0   0%
extras/models/models.py TableConfig.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py TableConfig.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py TableConfig.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py TableConfig.table_class   0% 1 1 0   100% 0 0   0%
extras/models/models.py TableConfig.ordering_items   0% 8 8 0   0% 4 0   0%
extras/models/models.py TableConfig.clean   0% 14 14 0   0% 14 0   0%
extras/models/models.py ImageAttachment.__init__   0% 2 2 0   100% 0 0   0%
extras/models/models.py ImageAttachment._image_identity   0% 3 3 0   100% 0 0   0%
extras/models/models.py ImageAttachment.__str__   0% 1 1 0   100% 0 0   0%
extras/models/models.py ImageAttachment.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py ImageAttachment.clean   0% 3 3 0   0% 2 0   0%
extras/models/models.py ImageAttachment.delete   0% 4 4 0   100% 0 0   0%
extras/models/models.py ImageAttachment.filename   0% 3 3 0   100% 0 0   0%
extras/models/models.py ImageAttachment.html_tag   0% 1 1 0   100% 0 0   0%
extras/models/models.py ImageAttachment._read_image_size   0% 12 12 0   0% 2 0   0%
extras/models/models.py ImageAttachment.size   0% 3 3 0   0% 2 0   0%
extras/models/models.py ImageAttachment.save   0% 7 7 0   0% 4 0   0%
extras/models/models.py ImageAttachment.to_objectchange   0% 3 3 0   100% 0 0   0%
extras/models/models.py JournalEntry.__str__   0% 2 2 0   100% 0 0   0%
extras/models/models.py JournalEntry.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py JournalEntry.clean   0% 3 3 0   0% 2 0   0%
extras/models/models.py JournalEntry.get_kind_color   0% 1 1 0   100% 0 0   0%
extras/models/models.py Bookmark.__str__   0% 3 3 0   0% 2 0   0%
extras/models/models.py Bookmark.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/models.py Bookmark.clean   0% 3 3 0   0% 2 0   0%
extras/models/models.py (no function)   100% 243 0 0   100% 0 0   100%
extras/models/notifications.py get_event_type_choices   100% 1 0 0   100% 0 0   100%
extras/models/notifications.py Notification.__str__   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py Notification.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py Notification.clean   0% 3 3 0   0% 2 0   0%
extras/models/notifications.py Notification.save   0% 3 3 0   0% 2 0   0%
extras/models/notifications.py Notification.event   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py Notification.get_object_repr   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py NotificationGroup.__str__   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py NotificationGroup.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py NotificationGroup.members   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py NotificationGroup.notify   0% 2 2 0   0% 2 0   0%
extras/models/notifications.py Subscription.__str__   0% 3 3 0   0% 2 0   0%
extras/models/notifications.py Subscription.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/notifications.py Subscription.clean   0% 3 3 0   0% 2 0   0%
extras/models/notifications.py (no function)   100% 73 0 0   100% 0 0   100%
extras/models/scripts.py Script.__str__   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py Script.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py Script.result   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py Script.python_class   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py Script.delete   0% 5 5 0   0% 2 0   0%
extras/models/scripts.py ScriptModuleManager.get_queryset   100% 1 0 0   100% 0 0   100%
extras/models/scripts.py ScriptModule.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py ScriptModule.__str__   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py ScriptModule.delete   0% 7 7 0   100% 0 0   0%
extras/models/scripts.py ScriptModule.ordered_scripts   0% 4 4 0   100% 0 0   0%
extras/models/scripts.py ScriptModule.module_scripts   0% 15 15 0   0% 6 0   0%
extras/models/scripts.py ScriptModule.module_scripts._get_name   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py ScriptModule.sync_classes   0% 11 11 0   0% 6 0   0%
extras/models/scripts.py ScriptModule.sync_data   0% 1 1 0   100% 0 0   0%
extras/models/scripts.py ScriptModule.save   0% 3 3 0   100% 0 0   0%
extras/models/scripts.py (no function)   100% 60 0 0   100% 0 0   100%
extras/models/search.py CachedValue.__str__   0% 1 1 0   100% 0 0   0%
extras/models/search.py CachedValue.display_attrs   0% 9 9 0   0% 6 0   0%
extras/models/search.py (no function)   100% 26 0 0   100% 0 0   100%
extras/models/tags.py Tag.get_absolute_url   0% 1 1 0   100% 0 0   0%
extras/models/tags.py Tag.docs_url   0% 1 1 0   100% 0 0   0%
extras/models/tags.py Tag.slugify   0% 4 4 0   0% 2 0   0%
extras/models/tags.py (no function)   100% 37 0 0   100% 0 0   100%
extras/querysets.py ConfigContextQuerySet.get_for_object   94% 18 1 0   50% 2 1   90%
extras/querysets.py ConfigContextModelQuerySet.annotate_config_context_data   100% 5 0 0   50% 2 1   86%
extras/querysets.py ConfigContextModelQuerySet._get_config_context_filters   100% 13 0 0   75% 4 1   94%
extras/querysets.py NotificationQuerySet.unread   0% 1 1 0   100% 0 0   0%
extras/querysets.py SharedObjectQuerySet.restrict_to_shared   40% 5 3 0   25% 4 1   33%
extras/querysets.py (no function)   100% 15 0 0   100% 0 0   100%
extras/reports.py Report.log   0% 1 1 0   100% 0 0   0%
extras/reports.py Report.log_success   0% 1 1 0   100% 0 0   0%
extras/reports.py Report.log_info   0% 1 1 0   100% 0 0   0%
extras/reports.py Report.log_warning   0% 1 1 0   100% 0 0   0%
extras/reports.py Report.log_failure   0% 1 1 0   100% 0 0   0%
extras/reports.py Report.log_debug   0% 1 1 0   100% 0 0   0%
extras/reports.py (no function)   0% 10 10 0   100% 0 0   0%
extras/scripts.py ScriptVariable.__init__   0% 11 11 0   0% 10 0   0%
extras/scripts.py ScriptVariable.as_field   0% 6 6 0   0% 4 0   0%
extras/scripts.py StringVar.__init__   0% 7 7 0   0% 6 0   0%
extras/scripts.py TextVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py IntegerVar.__init__   0% 5 5 0   0% 4 0   0%
extras/scripts.py DecimalVar.__init__   0% 9 9 0   0% 8 0   0%
extras/scripts.py BooleanVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py ChoiceVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py DateVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py DateTimeVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py MultiChoiceVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py ObjectVar.__init__   0% 2 2 0   100% 0 0   0%
extras/scripts.py IPNetworkVar.__init__   0% 6 6 0   0% 4 0   0%
extras/scripts.py BaseScript.__init__   0% 11 11 0   0% 4 0   0%
extras/scripts.py BaseScript.__str__   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.module   0% 4 4 0   0% 2 0   0%
extras/scripts.py BaseScript.class_name   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.full_name   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.root_module   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.name   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.description   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.field_order   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.fieldsets   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.commit_default   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.job_timeout   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.scheduling_enabled   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.notifications_default   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.validate_meta   0% 17 17 0   0% 10 0   0%
extras/scripts.py BaseScript.filename   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.findsource   0% 16 16 0   0% 8 0   0%
extras/scripts.py BaseScript.source   0% 7 7 0   100% 0 0   0%
extras/scripts.py BaseScript._get_vars   0% 12 12 0   0% 10 0   0%
extras/scripts.py BaseScript.run   0% 3 3 0   100% 0 0   0%
extras/scripts.py BaseScript.get_job_data   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.get_fieldsets   0% 10 10 0   0% 4 0   0%
extras/scripts.py BaseScript.as_form   0% 9 9 0   0% 2 0   0%
extras/scripts.py BaseScript._log   0% 12 12 0   0% 12 0   0%
extras/scripts.py BaseScript.log_debug   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.log_success   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.log_info   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.log_warning   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.log_failure   0% 2 2 0   100% 0 0   0%
extras/scripts.py BaseScript.run_tests   0% 11 11 0   0% 2 0   0%
extras/scripts.py BaseScript.pre_run   0% 1 1 0   100% 0 0   0%
extras/scripts.py BaseScript.post_run   0% 1 1 0   100% 0 0   0%
extras/scripts.py is_variable   0% 1 1 0   100% 0 0   0%
extras/scripts.py get_module_and_script   0% 3 3 0   100% 0 0   0%
extras/scripts.py prepare_script_form   0% 10 10 0   0% 8 0   0%
extras/scripts.py (no function)   100% 127 0 0   100% 0 0   100%
extras/search.py (no function)   100% 33 0 0   100% 0 0   100%
extras/signals.py handle_cf_object_types_changed   0% 9 9 0   0% 6 0   0%
extras/signals.py handle_cf_renamed   0% 2 2 0   0% 2 0   0%
extras/signals.py handle_cf_deleted   0% 2 2 0   0% 2 0   0%
extras/signals.py handle_cf_cache_invalidation   0% 3 3 0   0% 2 0   0%
extras/signals.py run_save_validators   100% 3 0 0   100% 0 0   100%
extras/signals.py validate_assigned_tags   33% 6 4 0   17% 6 1   25%
extras/signals.py invalidate_on_configcontext_save   0% 1 1 0   100% 0 0   0%
extras/signals.py invalidate_on_configcontext_delete   0% 1 1 0   100% 0 0   0%
extras/signals.py invalidate_on_configcontext_m2m_change   0% 5 5 0   0% 4 0   0%
extras/signals.py _connect_configcontext_m2m_handlers   100% 5 0 0   100% 2 0   100%
extras/signals.py _connect_configcontext_m2m_handlers._handler   0% 1 1 0   100% 0 0   0%
extras/signals.py _changed_fields   75% 8 2 0   67% 6 2   71%
extras/signals.py _make_object_save_handler   100% 3 0 0   100% 0 0   100%
extras/signals.py _make_object_save_handler._handler   100% 2 0 0   100% 2 0   100%
extras/signals.py _connect_object_save_handlers   100% 4 0 0   100% 2 0   100%
extras/signals.py invalidate_on_device_vm_tag_change   75% 8 2 0   67% 6 2   71%
extras/signals.py _make_direct_upstream_handler   100% 2 0 0   100% 0 0   100%
extras/signals.py _make_direct_upstream_handler._handler   25% 8 6 0   17% 6 1   21%
extras/signals.py _make_reparent_handler   100% 2 0 0   100% 0 0   100%
extras/signals.py _make_reparent_handler._handler   15% 13 11 0   12% 8 1   14%
extras/signals.py _connect_upstream_handlers   100% 9 0 0   100% 4 0   100%
extras/signals.py _make_upstream_delete_handler   100% 2 0 0   100% 0 0   100%
extras/signals.py _make_upstream_delete_handler._handler   100% 1 0 0   100% 0 0   100%
extras/signals.py _connect_upstream_delete_handlers   100% 5 0 0   100% 2 0   100%
extras/signals.py process_job_start_event_rules   0% 3 3 0   100% 0 0   0%
extras/signals.py process_job_end_event_rules   0% 3 3 0   100% 0 0   0%
extras/signals.py notify_object_changed   85% 13 2 0   88% 8 1   86%
extras/signals.py (no function)   100% 57 0 0   100% 0 0   100%
extras/storage.py ScriptFileSystemStorage.base_location   0% 1 1 0   100% 0 0   0%
extras/storage.py (no function)   100% 6 0 0   100% 0 0   100%
extras/tables/__init__.py (no function)   100% 1 0 0   100% 0 0   100%
extras/tables/columns.py CustomFieldStatusColumn.render   0% 2 2 0   100% 0 0   0%
extras/tables/columns.py CustomFieldStatusColumn.value   0% 1 1 0   100% 0 0   0%
extras/tables/columns.py (no function)   100% 12 0 0   100% 0 0   100%
extras/tables/tables.py ImageAttachmentTable.render_size   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py ImageAttachmentTable.value_size   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py SavedFilterTable.value_parameters   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py EventRuleTable.render_action_type   0% 4 4 0   0% 2 0   0%
extras/tables/tables.py EventRuleTable.value_action_type   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py ScriptResultsTable.render_object   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py ScriptResultsTable.render_url   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py ReportResultsTable.render_object   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py ReportResultsTable.render_url   0% 1 1 0   100% 0 0   0%
extras/tables/tables.py (no function)   100% 279 0 0   100% 0 0   100%
extras/templatetags/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
extras/templatetags/custom_links.py custom_links   0% 30 30 0   0% 18 0   0%
extras/templatetags/custom_links.py (no function)   100% 13 0 0   100% 0 0   100%
extras/templatetags/dashboard.py render_widget   0% 7 7 0   100% 0 0   0%
extras/templatetags/dashboard.py (no function)   100% 7 0 0   100% 0 0   100%
extras/templatetags/log_levels.py log_level   0% 1 1 0   100% 0 0   0%
extras/templatetags/log_levels.py (no function)   100% 5 0 0   100% 0 0   100%
extras/ui/panels.py CustomFieldsPanel.get_context   0% 2 2 0   100% 0 0   0%
extras/ui/panels.py CustomFieldsPanel.should_render   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py ImageAttachmentsPanel.__init__   100% 1 0 0   100% 0 0   100%
extras/ui/panels.py TagsPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py CustomFieldRelatedObjectsPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py CustomFieldChoiceSetChoicesPanel.get_context   0% 3 3 0   100% 0 0   0%
extras/ui/panels.py TableConfigColumnsPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py TableConfigOrderingPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py WebhookTimeoutAttr.get_value   0% 3 3 0   0% 2 0   0%
extras/ui/panels.py EventRuleEventTypesPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py TagItemTypesPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py ConfigContextAssignmentPanel.get_context   0% 1 1 0   100% 0 0   0%
extras/ui/panels.py (no function)   100% 210 0 0   100% 0 0   100%
extras/urls.py (no function)   100% 5 0 0   100% 0 0   100%
extras/utils.py SharedObjectViewMixin.get_queryset   0% 1 1 0   100% 0 0   0%
extras/utils.py filename_from_model   0% 2 2 0   100% 0 0   0%
extras/utils.py filename_from_object   0% 6 6 0   0% 4 0   0%
extras/utils.py is_taggable   100% 4 0 0   75% 4 1   88%
extras/utils.py _build_image_attachment_path   0% 16 16 0   100% 0 0   0%
extras/utils.py image_upload   0% 3 3 0   100% 0 0   0%
extras/utils.py is_script   0% 6 6 0   100% 0 0   0%
extras/utils.py validate_script_content   25% 4 3 0   100% 0 0   25%
extras/utils.py is_report   0% 5 5 0   100% 0 0   0%
extras/utils.py run_validators   20% 10 8 0   12% 8 1   17%
extras/utils.py (no function)   100% 23 0 0   100% 0 0   100%
extras/validators.py IsEqualValidator.compare   0% 1 1 0   100% 0 0   0%
extras/validators.py IsNotEqualValidator.compare   0% 1 1 0   100% 0 0   0%
extras/validators.py IsEmptyValidator.__init__   0% 1 1 0   100% 0 0   0%
extras/validators.py IsEmptyValidator.__call__   0% 2 2 0   0% 2 0   0%
extras/validators.py IsNotEmptyValidator.__init__   0% 1 1 0   100% 0 0   0%
extras/validators.py IsNotEmptyValidator.__call__   0% 2 2 0   0% 2 0   0%
extras/validators.py CustomValidator.__init__   0% 3 3 0   0% 2 0   0%
extras/validators.py CustomValidator.__call__   0% 13 13 0   0% 8 0   0%
extras/validators.py CustomValidator._get_request_attr   0% 5 5 0   100% 0 0   0%
extras/validators.py CustomValidator._get_instance_attr   0% 11 11 0   0% 6 0   0%
extras/validators.py CustomValidator.get_validator   0% 4 4 0   0% 2 0   0%
extras/validators.py CustomValidator.validate   0% 1 1 0   100% 0 0   0%
extras/validators.py CustomValidator.fail   0% 3 3 0   0% 2 0   0%
extras/validators.py (no function)   100% 34 0 0   100% 0 0   100%
extras/views.py CustomFieldView.get_extra_context   0% 4 4 0   0% 2 0   0%
extras/views.py CustomFieldChoiceSetView.get_extra_context   0% 12 12 0   100% 0 0   0%
extras/views.py SavedFilterEditView.alter_object   0% 3 3 0   0% 2 0   0%
extras/views.py TableConfigView.get_extra_context   0% 2 2 0   100% 0 0   0%
extras/views.py TableConfigEditView.get   0% 4 4 0   0% 2 0   0%
extras/views.py TableConfigEditView.alter_object   0% 3 3 0   0% 2 0   0%
extras/views.py BookmarkCreateView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py BookmarkCreateView.alter_object   0% 2 2 0   100% 0 0   0%
extras/views.py BookmarkDeleteView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py BookmarkBulkDeleteView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py NotificationsView.get   0% 1 1 0   100% 0 0   0%
extras/views.py NotificationReadView.get   0% 6 6 0   0% 2 0   0%
extras/views.py NotificationDismissAllView.get   0% 7 7 0   0% 4 0   0%
extras/views.py NotificationDismissView.get   0% 8 8 0   0% 4 0   0%
extras/views.py NotificationDeleteView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py NotificationBulkDeleteView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py SubscriptionCreateView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py SubscriptionCreateView.alter_object   0% 2 2 0   100% 0 0   0%
extras/views.py SubscriptionDeleteView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py SubscriptionBulkDeleteView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py TagView.get_extra_context   0% 5 5 0   100% 0 0   0%
extras/views.py ConfigContextView.get_extra_context   0% 9 9 0   0% 6 0   0%
extras/views.py ObjectConfigContextView.get_extra_context   0% 9 9 0   0% 6 0   0%
extras/views.py ObjectRenderConfigView.get   0% 9 9 0   0% 2 0   0%
extras/views.py ObjectRenderConfigView.get_extra_context_data   0% 1 1 0   100% 0 0   0%
extras/views.py ObjectRenderConfigView.get_extra_context   0% 17 17 0   0% 4 0   0%
extras/views.py ImageAttachmentEditView.alter_object   0% 4 4 0   0% 2 0   0%
extras/views.py ImageAttachmentEditView.get_extra_addanother_params   0% 1 1 0   100% 0 0   0%
extras/views.py JournalEntryEditView.alter_object   0% 3 3 0   0% 2 0   0%
extras/views.py JournalEntryEditView.get_return_url   0% 4 4 0   0% 2 0   0%
extras/views.py JournalEntryDeleteView.get_return_url   0% 2 2 0   100% 0 0   0%
extras/views.py DashboardResetView.get   0% 3 3 0   100% 0 0   0%
extras/views.py DashboardResetView.post   0% 7 7 0   0% 2 0   0%
extras/views.py DashboardWidgetAddView.get   0% 8 8 0   0% 2 0   0%
extras/views.py DashboardWidgetAddView.post   0% 16 16 0   0% 4 0   0%
extras/views.py DashboardWidgetConfigView.get   0% 6 6 0   0% 2 0   0%
extras/views.py DashboardWidgetConfigView.post   0% 11 11 0   0% 2 0   0%
extras/views.py DashboardWidgetDeleteView.get   0% 5 5 0   0% 2 0   0%
extras/views.py DashboardWidgetDeleteView.post   0% 7 7 0   0% 2 0   0%
extras/views.py ScriptModuleCreateView.alter_object   0% 2 2 0   100% 0 0   0%
extras/views.py ScriptListView.get_required_permission   0% 1 1 0   100% 0 0   0%
extras/views.py ScriptListView.get   0% 9 9 0   0% 2 0   0%
extras/views.py BaseScriptView.get_object   0% 5 5 0   0% 4 0   0%
extras/views.py BaseScriptView._get_script_class   0% 3 3 0   0% 2 0   0%
extras/views.py ScriptView.get   0% 6 6 0   0% 2 0   0%
extras/views.py ScriptView.post   0% 23 23 0   0% 12 0   0%
extras/views.py ScriptSourceView.get   0% 3 3 0   100% 0 0   0%
extras/views.py ScriptJobsView.get   0% 4 4 0   100% 0 0   0%
extras/views.py ScriptResultView.get_required_permission   0% 1 1 0   100% 0 0   0%
extras/views.py ScriptResultView.get_queryset   0% 1 1 0   100% 0 0   0%
extras/views.py ScriptResultView.get_table   0% 33 33 0   0% 20 0   0%
extras/views.py ScriptResultView.get   0% 26 26 0   0% 16 0   0%
extras/views.py RenderMarkdownView.post   0% 5 5 0   0% 2 0   0%
extras/views.py (no function)   100% 737 0 0   100% 0 0   100%
extras/webhooks.py register_webhook_callback   0% 3 3 0   100% 0 0   0%
extras/webhooks.py generate_signature   0% 2 2 0   100% 0 0   0%
extras/webhooks.py send_webhook   0% 57 57 0   0% 18 0   0%
extras/webhooks.py (no function)   0% 18 18 0   100% 0 0   0%
generate_secret_key.py (no function)   0% 2 2 0   100% 0 0   0%
ipam/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/api/field_serializers.py IPAddressField.to_internal_value   100% 6 0 0   100% 0 0   100%
ipam/api/field_serializers.py IPAddressField.to_representation   100% 1 0 0   100% 0 0   100%
ipam/api/field_serializers.py IPNetworkField.to_internal_value   67% 6 2 0   100% 0 0   67%
ipam/api/field_serializers.py IPNetworkField.to_representation   100% 1 0 0   100% 0 0   100%
ipam/api/field_serializers.py (no function)   100% 12 0 0   100% 0 0   100%
ipam/api/serializers.py (no function)   100% 7 0 0   100% 0 0   100%
ipam/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/api/serializers_/asns.py AvailableASNSerializer.to_representation   0% 2 2 0   100% 0 0   0%
ipam/api/serializers_/asns.py (no function)   100% 43 0 0   100% 0 0   100%
ipam/api/serializers_/fhrpgroups.py (no function)   100% 21 0 0   100% 0 0   100%
ipam/api/serializers_/ip.py PrefixLengthSerializer.to_internal_value   0% 11 11 0   0% 8 0   0%
ipam/api/serializers_/ip.py AvailablePrefixSerializer.to_representation   75% 4 1 0   50% 2 1   67%
ipam/api/serializers_/ip.py AvailableIPRequestSerializer.to_internal_value   71% 14 4 0   60% 10 2   67%
ipam/api/serializers_/ip.py AvailableIPSerializer.to_representation   75% 4 1 0   50% 2 1   67%
ipam/api/serializers_/ip.py (no function)   100% 87 0 0   100% 0 0   100%
ipam/api/serializers_/nested.py (no function)   100% 15 0 0   100% 0 0   100%
ipam/api/serializers_/roles.py (no function)   100% 12 0 0   100% 0 0   100%
ipam/api/serializers_/services.py PortMappingsField.to_internal_value   100% 5 0 0   100% 0 0   100%
ipam/api/serializers_/services.py PortMappingsSerializerMixin.validate   0% 23 23 0   0% 14 0   0%
ipam/api/serializers_/services.py (no function)   100% 35 0 0   100% 0 0   100%
ipam/api/serializers_/vlans.py AvailableVLANSerializer.to_representation   100% 1 0 0   100% 0 0   100%
ipam/api/serializers_/vlans.py CreateAvailableVLANSerializer.validate   0% 1 1 0   100% 0 0   0%
ipam/api/serializers_/vlans.py (no function)   100% 66 0 0   100% 0 0   100%
ipam/api/serializers_/vrfs.py (no function)   100% 21 0 0   100% 0 0   100%
ipam/api/urls.py (no function)   100% 26 0 0   100% 0 0   100%
ipam/api/views.py IPAMRootView.get_view_name   0% 1 1 0   100% 0 0   0%
ipam/api/views.py PrefixViewSet.get_serializer_class   67% 3 1 0   50% 2 1   60%
ipam/api/views.py IPAddressViewSet.create   100% 1 0 0   100% 0 0   100%
ipam/api/views.py IPAddressViewSet.update   100% 1 0 0   100% 0 0   100%
ipam/api/views.py IPAddressViewSet.destroy   100% 1 0 0   100% 0 0   100%
ipam/api/views.py get_results_limit   75% 8 2 0   50% 2 1   70%
ipam/api/views.py AvailableObjectsView.get_parent   0% 1 1 0   100% 0 0   0%
ipam/api/views.py AvailableObjectsView.get_available_objects   0% 1 1 0   100% 0 0   0%
ipam/api/views.py AvailableObjectsView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/api/views.py AvailableObjectsView.check_sufficient_available   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableObjectsView.prep_object_data   0% 1 1 0   100% 0 0   0%
ipam/api/views.py AvailableObjectsView.get   100% 5 0 0   100% 0 0   100%
ipam/api/views.py AvailableObjectsView.post   81% 27 5 0   62% 8 3   77%
ipam/api/views.py AvailableASNsView.get_parent   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableASNsView.get_available_objects   0% 1 1 0   100% 0 0   0%
ipam/api/views.py AvailableASNsView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/api/views.py AvailableASNsView.prep_object_data   0% 3 3 0   0% 2 0   0%
ipam/api/views.py AvailableASNsView.get   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableASNsView.post   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailablePrefixesView.get_parent   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailablePrefixesView.get_available_objects   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailablePrefixesView.check_sufficient_available   60% 5 2 0   25% 4 1   44%
ipam/api/views.py AvailablePrefixesView.get_extra_context   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailablePrefixesView.prep_object_data   50% 6 3 0   25% 4 1   40%
ipam/api/views.py AvailablePrefixesView.get   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailablePrefixesView.post   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableIPAddressesView.get_available_objects   100% 6 0 0   100% 4 0   100%
ipam/api/views.py AvailableIPAddressesView.get_extra_context   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableIPAddressesView.prep_object_data   60% 5 2 0   50% 2 1   57%
ipam/api/views.py AvailableIPAddressesView.get   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableIPAddressesView.post   100% 1 0 0   100% 0 0   100%
ipam/api/views.py PrefixAvailableIPAddressesView.get_parent   100% 1 0 0   100% 0 0   100%
ipam/api/views.py IPRangeAvailableIPAddressesView.get_parent   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableVLANsView.get_parent   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableVLANsView.get_available_objects   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableVLANsView.get_extra_context   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableVLANsView.prep_object_data   0% 3 3 0   0% 2 0   0%
ipam/api/views.py AvailableVLANsView.get   100% 1 0 0   100% 0 0   100%
ipam/api/views.py AvailableVLANsView.post   100% 1 0 0   100% 0 0   100%
ipam/api/views.py (no function)   100% 176 0 0   100% 0 0   100%
ipam/apps.py IPAMConfig.ready   100% 3 0 0   100% 0 0   100%
ipam/apps.py (no function)   100% 5 0 0   100% 0 0   100%
ipam/choices.py (no function)   100% 65 0 0   100% 0 0   100%
ipam/constants.py (no function)   100% 18 0 0   100% 0 0   100%
ipam/fields.py BaseIPField.python_type   0% 1 1 0   100% 0 0   0%
ipam/fields.py BaseIPField.from_db_value   100% 1 0 0   100% 0 0   100%
ipam/fields.py BaseIPField.get_internal_type   100% 1 0 0   100% 0 0   100%
ipam/fields.py BaseIPField.to_python   38% 8 5 0   50% 2 1   40%
ipam/fields.py BaseIPField.get_prep_value   80% 5 1 0   75% 4 1   78%
ipam/fields.py BaseIPField.form_class   100% 1 0 0   100% 0 0   100%
ipam/fields.py BaseIPField.formfield   100% 3 0 0   100% 0 0   100%
ipam/fields.py IPNetworkField.db_type   100% 1 0 0   100% 0 0   100%
ipam/fields.py IPAddressField.db_type   100% 1 0 0   100% 0 0   100%
ipam/fields.py ASNField.formfield   100% 3 0 0   100% 0 0   100%
ipam/fields.py ASNField.to_asdot   0% 6 6 0   0% 4 0   0%
ipam/fields.py (no function)   100% 64 0 0   100% 0 0   100%
ipam/filtersets.py VRFFilterSet.search   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py RouteTargetFilterSet.search   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py AggregateFilterSet.search   0% 11 11 0   0% 2 0   0%
ipam/filtersets.py AggregateFilterSet.filter_prefix   0% 7 7 0   0% 2 0   0%
ipam/filtersets.py ASNRangeFilterSet.search   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py ASNFilterSet.search   0% 8 8 0   0% 2 0   0%
ipam/filtersets.py PrefixFilterSet.search   0% 11 11 0   0% 2 0   0%
ipam/filtersets.py PrefixFilterSet.filter_prefix   0% 7 7 0   0% 2 0   0%
ipam/filtersets.py PrefixFilterSet.search_within   0% 8 8 0   0% 2 0   0%
ipam/filtersets.py PrefixFilterSet.search_within_include   0% 8 8 0   0% 2 0   0%
ipam/filtersets.py PrefixFilterSet.search_contains   0% 9 9 0   0% 4 0   0%
ipam/filtersets.py PrefixFilterSet.filter_present_in_vrf   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py IPRangeFilterSet.search   0% 10 10 0   0% 2 0   0%
ipam/filtersets.py IPRangeFilterSet.search_contains   0% 8 8 0   0% 2 0   0%
ipam/filtersets.py IPRangeFilterSet.filter_address   0% 4 4 0   100% 0 0   0%
ipam/filtersets.py IPRangeFilterSet.search_by_parent   0% 10 10 0   0% 4 0   0%
ipam/filtersets.py IPAddressFilterSet.search   0% 4 4 0   0% 2 0   0%
ipam/filtersets.py IPAddressFilterSet.search_by_parent   0% 10 10 0   0% 4 0   0%
ipam/filtersets.py IPAddressFilterSet.parse_inet_addresses   0% 11 11 0   0% 4 0   0%
ipam/filtersets.py IPAddressFilterSet.filter_address   0% 7 7 0   0% 2 0   0%
ipam/filtersets.py IPAddressFilterSet.filter_present_in_vrf   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py IPAddressFilterSet.filter_device   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py IPAddressFilterSet.filter_virtual_machine   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py IPAddressFilterSet._assigned_to_interface   0% 4 4 0   0% 2 0   0%
ipam/filtersets.py IPAddressFilterSet._assigned   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py FHRPGroupFilterSet.search   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py FHRPGroupFilterSet.filter_related_ip   43% 7 4 0   25% 4 1   36%
ipam/filtersets.py FHRPGroupAssignmentFilterSet.filter_device   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py FHRPGroupAssignmentFilterSet.filter_virtual_machine   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py VLANGroupFilterSet.search   0% 4 4 0   0% 2 0   0%
ipam/filtersets.py VLANGroupFilterSet.filter_scope   100% 2 0 0   100% 0 0   100%
ipam/filtersets.py VLANFilterSet.search   0% 8 8 0   0% 2 0   0%
ipam/filtersets.py VLANFilterSet.get_for_site   0% 1 1 0   100% 0 0   0%
ipam/filtersets.py VLANFilterSet.get_for_site_group   0% 1 1 0   100% 0 0   0%
ipam/filtersets.py VLANFilterSet.get_for_device   0% 1 1 0   100% 0 0   0%
ipam/filtersets.py VLANFilterSet.get_for_virtualmachine   0% 1 1 0   100% 0 0   0%
ipam/filtersets.py VLANFilterSet.filter_related_to_site   67% 3 1 0   50% 2 1   60%
ipam/filtersets.py VLANFilterSet.filter_related_to_site_negated   67% 3 1 0   50% 2 1   60%
ipam/filtersets.py VLANFilterSet.filter_interface_id   0% 5 5 0   0% 2 0   0%
ipam/filtersets.py VLANFilterSet.filter_vminterface_id   0% 5 5 0   0% 2 0   0%
ipam/filtersets.py VLANTranslationPolicyFilterSet.search   0% 4 4 0   0% 2 0   0%
ipam/filtersets.py VLANTranslationRuleFilterSet.search   0% 10 10 0   0% 2 0   0%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_queryset   86% 7 1 0   50% 2 1   78%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_noop   0% 1 1 0   100% 0 0   0%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_protocol_noop   0% 1 1 0   100% 0 0   0%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_port_mappings   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_port_mappings_negated   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_protocol_negated   0% 3 3 0   0% 2 0   0%
ipam/filtersets.py ServicePortMappingFilterMixin.filter_port_negated   75% 4 1 0   50% 2 1   67%
ipam/filtersets.py ServiceTemplateFilterSet.search   0% 4 4 0   0% 2 0   0%
ipam/filtersets.py ServiceFilterSet.search   0% 4 4 0   0% 2 0   0%
ipam/filtersets.py ServiceFilterSet.filter_device   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py ServiceFilterSet.filter_fhrp_group   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py ServiceFilterSet.filter_virtual_machine   0% 7 7 0   0% 4 0   0%
ipam/filtersets.py (no function)   100% 333 0 0   100% 0 0   100%
ipam/formfields.py IPAddressFormField.to_python   0% 17 17 0   0% 4 0   0%
ipam/formfields.py IPNetworkFormField.to_python   0% 10 10 0   0% 6 0   0%
ipam/formfields.py (no function)   100% 11 0 0   100% 0 0   100%
ipam/forms/__init__.py (no function)   100% 7 0 0   100% 0 0   100%
ipam/forms/bulk_create.py (no function)   100% 9 0 0   100% 0 0   100%
ipam/forms/bulk_edit.py (no function)   100% 140 0 0   100% 0 0   100%
ipam/forms/bulk_import.py PrefixImportForm.__init__   0% 12 12 0   0% 6 0   0%
ipam/forms/bulk_import.py IPAddressImportForm.__init__   0% 6 6 0   0% 6 0   0%
ipam/forms/bulk_import.py IPAddressImportForm.clean_is_primary   0% 3 3 0   0% 2 0   0%
ipam/forms/bulk_import.py IPAddressImportForm.clean_is_oob   0% 3 3 0   0% 2 0   0%
ipam/forms/bulk_import.py IPAddressImportForm.clean   0% 16 16 0   0% 10 0   0%
ipam/forms/bulk_import.py IPAddressImportForm.save   0% 33 33 0   0% 22 0   0%
ipam/forms/bulk_import.py ServicePortMappingsImportMixin.clean_port_mappings   0% 15 15 0   0% 4 0   0%
ipam/forms/bulk_import.py ServiceImportForm.__init__   0% 9 9 0   0% 8 0   0%
ipam/forms/bulk_import.py ServiceImportForm.save   0% 3 3 0   0% 2 0   0%
ipam/forms/bulk_import.py ServiceImportForm.clean   0% 13 13 0   0% 10 0   0%
ipam/forms/bulk_import.py (no function)   100% 149 0 0   100% 0 0   100%
ipam/forms/fields.py PortMappingField.prepare_value   0% 9 9 0   0% 4 0   0%
ipam/forms/fields.py PortMappingField.to_python   0% 27 27 0   0% 16 0   0%
ipam/forms/fields.py PortMappingField.has_changed   0% 2 2 0   100% 0 0   0%
ipam/forms/fields.py PortMappingField.has_changed.normalize   0% 4 4 0   100% 0 0   0%
ipam/forms/fields.py (no function)   100% 13 0 0   100% 0 0   100%
ipam/forms/filtersets.py (no function)   100% 170 0 0   100% 0 0   100%
ipam/forms/model_forms.py ASNForm.__init__   0% 3 3 0   0% 2 0   0%
ipam/forms/model_forms.py ASNForm.save   0% 3 3 0   100% 0 0   0%
ipam/forms/model_forms.py PrefixForm.__init__   0% 9 9 0   0% 6 0   0%
ipam/forms/model_forms.py IPAddressForm.__init__   0% 25 25 0   0% 20 0   0%
ipam/forms/model_forms.py IPAddressForm.clean   0% 19 19 0   0% 14 0   0%
ipam/forms/model_forms.py IPAddressForm.save   0% 26 26 0   0% 16 0   0%
ipam/forms/model_forms.py FHRPGroupForm.save   0% 8 8 0   0% 4 0   0%
ipam/forms/model_forms.py FHRPGroupForm.clean   0% 8 8 0   0% 4 0   0%
ipam/forms/model_forms.py FHRPGroupAssignmentForm.clean_group   0% 7 7 0   0% 4 0   0%
ipam/forms/model_forms.py VLANBulkAddForm.__init__   0% 2 2 0   100% 0 0   0%
ipam/forms/model_forms.py ServiceForm.__init__   0% 8 8 0   0% 6 0   0%
ipam/forms/model_forms.py ServiceCreateForm.__init__   0% 4 4 0   0% 2 0   0%
ipam/forms/model_forms.py ServiceCreateForm.clean   0% 9 9 0   0% 6 0   0%
ipam/forms/model_forms.py (no function)   100% 188 0 0   100% 0 0   100%
ipam/forms/widgets.py PortMappingWidget.id_for_label   0% 1 1 0   100% 0 0   0%
ipam/forms/widgets.py PortMappingWidget.get_context   0% 12 12 0   0% 6 0   0%
ipam/forms/widgets.py PortMappingWidget.value_from_datadict   0% 1 1 0   100% 0 0   0%
ipam/forms/widgets.py (no function)   100% 11 0 0   100% 0 0   100%
ipam/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/graphql/enums.py (no function)   100% 13 0 0   100% 0 0   100%
ipam/graphql/filters.py AggregateFilter.contains   0% 10 10 0   0% 4 0   0%
ipam/graphql/filters.py AggregateFilter.family   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py FHRPGroupAssignmentFilter.device_id   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py FHRPGroupAssignmentFilter.device   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py FHRPGroupAssignmentFilter.virtual_machine_id   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py FHRPGroupAssignmentFilter.virtual_machine   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py FHRPGroupAssignmentFilter.filter_device   0% 5 5 0   0% 2 0   0%
ipam/graphql/filters.py IPAddressFilter.assigned   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py IPAddressFilter.parent   0% 10 10 0   0% 4 0   0%
ipam/graphql/filters.py IPAddressFilter.family   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py IPRangeFilter.parent   0% 10 10 0   0% 4 0   0%
ipam/graphql/filters.py IPRangeFilter.contains   0% 12 12 0   0% 4 0   0%
ipam/graphql/filters.py PrefixFilter.contains   0% 10 10 0   0% 4 0   0%
ipam/graphql/filters.py PrefixFilter.family   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _supplied   0% 2 2 0   100% 0 0   0%
ipam/graphql/filters.py _port_mapping_args   0% 3 3 0   100% 0 0   0%
ipam/graphql/filters.py _owns_predicate   0% 4 4 0   0% 4 0   0%
ipam/graphql/filters.py _port_mapping_prefix_q   0% 4 4 0   0% 2 0   0%
ipam/graphql/filters.py _make_port_mapping_filters   100% 16 0 0   100% 0 0   100%
ipam/graphql/filters.py _make_port_mapping_filters.correlated   0% 4 4 0   0% 2 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.protocol   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.port   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.port__gt   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.port__gte   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.port__lt   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.port__lte   0% 1 1 0   100% 0 0   0%
ipam/graphql/filters.py _make_port_mapping_filters.port_mappings   0% 2 2 0   100% 0 0   0%
ipam/graphql/filters.py (no function)   97% 192 6 0   50% 2 1   96%
ipam/graphql/mixins.py (no function)   100% 7 0 0   100% 0 0   100%
ipam/graphql/schema.py (no function)   100% 41 0 0   100% 0 0   100%
ipam/graphql/types.py AggregateType.family   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py FHRPGroupAssignmentType.interface   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py IPAddressType.family   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py IPAddressType.assigned_object   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py PrefixType.family   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py PrefixType.scope   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py ServiceType.protocol   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py ServiceType.ports   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py ServiceType.parent   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py ServiceTemplateType.protocol   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py ServiceTemplateType.ports   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py VLANType.qinq_svlan   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py VLANGroupType.scope   0% 1 1 0   100% 0 0   0%
ipam/graphql/types.py (no function)   94% 87 5 0   50% 2 1   93%
ipam/lookups.py NetFieldDecoratorMixin.process_lhs   0% 4 4 0   100% 0 0   0%
ipam/lookups.py IExact.get_rhs_op   0% 1 1 0   100% 0 0   0%
ipam/lookups.py IEndsWith.get_rhs_op   0% 1 1 0   100% 0 0   0%
ipam/lookups.py IStartsWith.get_rhs_op   0% 1 1 0   100% 0 0   0%
ipam/lookups.py NetContainsOrEquals.as_sql   100% 4 0 0   100% 0 0   100%
ipam/lookups.py NetContains.as_sql   0% 4 4 0   100% 0 0   0%
ipam/lookups.py NetContained.as_sql   100% 4 0 0   100% 0 0   100%
ipam/lookups.py NetContainedOrEqual.as_sql   100% 4 0 0   100% 0 0   100%
ipam/lookups.py NetHost.as_sql   100% 7 0 0   50% 2 1   89%
ipam/lookups.py NetIn.get_prep_lookup   0% 1 1 0   100% 0 0   0%
ipam/lookups.py NetIn.as_sql   0% 16 16 0   0% 8 0   0%
ipam/lookups.py NetIn.create_in_clause   0% 7 7 0   0% 4 0   0%
ipam/lookups.py NetHostContained.as_sql   0% 4 4 0   100% 0 0   0%
ipam/lookups.py NetHostBetween.get_prep_lookup   56% 9 4 0   50% 4 2   54%
ipam/lookups.py NetHostBetween.as_sql   100% 3 0 0   100% 0 0   100%
ipam/lookups.py NetFamily.output_field   0% 1 1 0   100% 0 0   0%
ipam/lookups.py NetMaskLength.output_field   0% 1 1 0   100% 0 0   0%
ipam/lookups.py (no function)   100% 64 0 0   100% 0 0   100%
ipam/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/management/commands/rebuild_prefixes.py Command.handle   0% 10 10 0   0% 2 0   0%
ipam/management/commands/rebuild_prefixes.py (no function)   0% 7 7 0   100% 0 0   0%
ipam/managers.py IPAddressManager.get_queryset   100% 1 0 0   100% 0 0   100%
ipam/managers.py (no function)   100% 5 0 0   100% 0 0   100%
ipam/models/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
ipam/models/asns.py ASNRange.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASNRange.clean   0% 3 3 0   0% 2 0   0%
ipam/models/asns.py ASNRange.range   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASNRange.start_asdot   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASNRange.end_asdot   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASNRange.range_as_string   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASNRange.range_as_string_with_asdot   0% 3 3 0   0% 2 0   0%
ipam/models/asns.py ASNRange.get_child_asns   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASNRange.get_available_asns   0% 4 4 0   100% 0 0   0%
ipam/models/asns.py ASN.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASN.asn_asdot   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py ASN.asn_with_asdot   0% 3 3 0   0% 2 0   0%
ipam/models/asns.py ASN.prefixed_name   0% 1 1 0   100% 0 0   0%
ipam/models/asns.py (no function)   100% 49 0 0   100% 0 0   100%
ipam/models/fhrp.py FHRPGroup.__str__   89% 9 1 0   67% 6 2   80%
ipam/models/fhrp.py FHRPGroupAssignment.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/fhrp.py FHRPGroupAssignment.get_absolute_url   0% 3 3 0   0% 2 0   0%
ipam/models/fhrp.py (no function)   100% 37 0 0   100% 0 0   100%
ipam/models/ip.py GetAvailablePrefixesMixin.get_available_prefixes   100% 5 0 0   50% 2 1   86%
ipam/models/ip.py GetAvailablePrefixesMixin.get_first_available_prefix   0% 4 4 0   0% 2 0   0%
ipam/models/ip.py Aggregate.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py Aggregate.clean   0% 14 14 0   0% 12 0   0%
ipam/models/ip.py Aggregate.family   0% 5 5 0   0% 4 0   0%
ipam/models/ip.py Aggregate.ipv6_full   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py Aggregate.get_child_prefixes   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py Aggregate.get_utilization   0% 4 4 0   100% 0 0   0%
ipam/models/ip.py Role.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py Prefix.__init__   100% 3 0 0   100% 0 0   100%
ipam/models/ip.py Prefix.__str__   100% 1 0 0   100% 0 0   100%
ipam/models/ip.py Prefix.clean   67% 9 3 0   50% 8 4   59%
ipam/models/ip.py Prefix.save   100% 4 0 0   100% 2 0   100%
ipam/models/ip.py Prefix.family   60% 5 2 0   50% 4 2   56%
ipam/models/ip.py Prefix.mask_length   60% 5 2 0   50% 4 2   56%
ipam/models/ip.py Prefix.ipv6_full   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py Prefix.depth   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py Prefix.children   100% 1 0 0   100% 0 0   100%
ipam/models/ip.py Prefix._set_prefix_length   0% 2 2 0   0% 2 0   0%
ipam/models/ip.py Prefix.get_status_color   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py Prefix.aggregate   0% 4 4 0   100% 0 0   0%
ipam/models/ip.py Prefix.get_parents   100% 2 0 0   100% 0 0   100%
ipam/models/ip.py Prefix.get_children   100% 2 0 0   100% 0 0   100%
ipam/models/ip.py Prefix.get_duplicates   100% 1 0 0   100% 0 0   100%
ipam/models/ip.py Prefix.get_child_prefixes   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py Prefix.usable_ip_bounds   80% 10 2 0   50% 4 2   71%
ipam/models/ip.py Prefix.usable_size   0% 2 2 0   100% 0 0   0%
ipam/models/ip.py Prefix.get_child_ranges   100% 3 0 0   100% 0 0   100%
ipam/models/ip.py Prefix.get_child_ips   80% 5 1 0   50% 2 1   71%
ipam/models/ip.py Prefix.get_available_ips   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py Prefix.iter_available_ips   100% 2 0 0   100% 2 0   100%
ipam/models/ip.py Prefix.get_available_ip_count   0% 8 8 0   0% 2 0   0%
ipam/models/ip.py Prefix.get_ip_usage_summary   0% 11 11 0   0% 2 0   0%
ipam/models/ip.py Prefix.get_first_available_ip   0% 6 6 0   0% 2 0   0%
ipam/models/ip.py Prefix.get_utilization   0% 14 14 0   0% 6 0   0%
ipam/models/ip.py Prefix._available_intervals   100% 3 0 0   100% 0 0   100%
ipam/models/ip.py Prefix._get_utilization_denominator   0% 4 4 0   0% 2 0   0%
ipam/models/ip.py IPRange.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.clean   0% 14 14 0   0% 12 0   0%
ipam/models/ip.py IPRange.save   0% 2 2 0   100% 0 0   0%
ipam/models/ip.py IPRange.family   0% 5 5 0   0% 4 0   0%
ipam/models/ip.py IPRange.range   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.mask_length   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.name   0% 13 13 0   0% 6 0   0%
ipam/models/ip.py IPRange._set_prefix_length   0% 2 2 0   100% 0 0   0%
ipam/models/ip.py IPRange.get_status_color   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.first_available_ip   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.utilization   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py IPRange.get_child_ips   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.get_available_ips   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPRange.iter_available_ips   0% 2 2 0   0% 2 0   0%
ipam/models/ip.py IPRange.get_available_ip_count   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py IPRange.get_first_available_ip   0% 6 6 0   0% 4 0   0%
ipam/models/ip.py IPRange._available_intervals   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py IPRange._occupied_host_count   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPAddress.__str__   100% 1 0 0   100% 0 0   100%
ipam/models/ip.py IPAddress.__init__   100% 3 0 0   100% 0 0   100%
ipam/models/ip.py IPAddress.ipv6_full   0% 3 3 0   0% 2 0   0%
ipam/models/ip.py IPAddress.get_duplicates   100% 1 0 0   100% 0 0   100%
ipam/models/ip.py IPAddress.get_next_available_ip   0% 9 9 0   0% 6 0   0%
ipam/models/ip.py IPAddress.get_related_ips   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPAddress.clean   56% 41 18 0   39% 38 15   48%
ipam/models/ip.py IPAddress.save   100% 2 0 0   100% 0 0   100%
ipam/models/ip.py IPAddress.clone   0% 4 4 0   0% 2 0   0%
ipam/models/ip.py IPAddress.to_objectchange   100% 3 0 0   100% 0 0   100%
ipam/models/ip.py IPAddress.family   60% 5 2 0   50% 4 2   56%
ipam/models/ip.py IPAddress.is_oob_ip   0% 5 5 0   0% 4 0   0%
ipam/models/ip.py IPAddress.is_primary_ip   0% 7 7 0   0% 6 0   0%
ipam/models/ip.py IPAddress._set_mask_length   0% 2 2 0   0% 2 0   0%
ipam/models/ip.py IPAddress.get_status_color   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py IPAddress.get_role_color   0% 1 1 0   100% 0 0   0%
ipam/models/ip.py (no function)   100% 196 0 0   100% 0 0   100%
ipam/models/services.py ServiceBase.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/services.py ServiceBase.clean   0% 7 7 0   0% 2 0   0%
ipam/models/services.py ServiceBase._normalize_mapping   0% 2 2 0   100% 0 0   0%
ipam/models/services.py ServiceBase._add_port_mappings   0% 2 2 0   100% 0 0   0%
ipam/models/services.py ServiceBase._remove_port_mappings   0% 2 2 0   100% 0 0   0%
ipam/models/services.py ServiceBase.port_mappings_list   0% 10 10 0   0% 6 0   0%
ipam/models/services.py ServiceBase._legacy_protocol_ports   0% 1 1 0   100% 0 0   0%
ipam/models/services.py ServiceBase.protocol   0% 1 1 0   100% 0 0   0%
ipam/models/services.py ServiceBase.ports   0% 1 1 0   100% 0 0   0%
ipam/models/services.py (no function)   100% 53 0 0   100% 0 0   100%
ipam/models/vlans.py default_vid_ranges   100% 1 0 0   100% 0 0   100%
ipam/models/vlans.py VLANGroup.clean   56% 16 7 0   57% 14 6   57%
ipam/models/vlans.py VLANGroup.save   91% 11 1 0   75% 4 1   87%
ipam/models/vlans.py VLANGroup.get_available_vids   100% 6 0 0   100% 2 0   100%
ipam/models/vlans.py VLANGroup.get_next_available_vid   0% 4 4 0   0% 2 0   0%
ipam/models/vlans.py VLANGroup.get_child_vlans   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLANGroup.vid_ranges_items   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLANGroup.vid_ranges_list   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLAN.__str__   100% 1 0 0   100% 0 0   100%
ipam/models/vlans.py VLAN.clean   43% 14 8 0   31% 16 5   37%
ipam/models/vlans.py VLAN.get_status_color   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLAN.get_qinq_role_color   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLAN.get_interfaces   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLAN.get_vminterfaces   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLAN.l2vpn_termination   100% 1 0 0   100% 0 0   100%
ipam/models/vlans.py VLANTranslationPolicy.__str__   100% 1 0 0   100% 0 0   100%
ipam/models/vlans.py VLANTranslationRule.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/vlans.py VLANTranslationRule.to_objectchange   0% 3 3 0   100% 0 0   0%
ipam/models/vlans.py (no function)   100% 89 0 0   100% 0 0   100%
ipam/models/vrfs.py VRF.__str__   67% 3 1 0   50% 2 1   60%
ipam/models/vrfs.py RouteTarget.__str__   0% 1 1 0   100% 0 0   0%
ipam/models/vrfs.py (no function)   100% 27 0 0   100% 0 0   100%
ipam/querysets.py _merge_intervals   20% 10 8 0   17% 6 1   19%
ipam/querysets.py ASNRangeQuerySet.annotate_asn_counts   100% 3 0 0   100% 0 0   100%
ipam/querysets.py IPAddressQuerySet.count_distinct_hosts   0% 4 4 0   0% 2 0   0%
ipam/querysets.py IPAddressQuerySet.count_distinct_hosts_pair   0% 8 8 0   0% 4 0   0%
ipam/querysets.py IPAddressQuerySet._iter_distinct_hosts   64% 11 4 0   50% 6 1   59%
ipam/querysets.py IPAddressQuerySet.available_intervals   73% 22 6 0   56% 16 7   66%
ipam/querysets.py IPAddressQuerySet.first_available_host   0% 2 2 0   100% 0 0   0%
ipam/querysets.py IPRangeQuerySet.get_intervals   23% 13 10 0   10% 10 1   17%
ipam/querysets.py PrefixQuerySet.annotate_hierarchy   100% 1 0 0   100% 0 0   100%
ipam/querysets.py VLANGroupQuerySet.annotate_utilization   100% 2 0 0   100% 0 0   100%
ipam/querysets.py VLANQuerySet.get_for_site   0% 8 8 0   0% 4 0   0%
ipam/querysets.py VLANQuerySet.get_for_site_group   0% 5 5 0   0% 2 0   0%
ipam/querysets.py VLANQuerySet.get_for_device   0% 16 16 0   0% 12 0   0%
ipam/querysets.py VLANQuerySet.get_for_virtualmachine   0% 28 28 0   0% 20 0   0%
ipam/querysets.py VLANQuerySet.get_related_to_sites   0% 16 16 0   0% 10 0   0%
ipam/querysets.py (no function)   100% 33 0 0   100% 0 0   100%
ipam/search.py (no function)   100% 87 0 0   100% 0 0   100%
ipam/signals.py update_parents_children   100% 4 0 0   100% 2 0   100%
ipam/signals.py update_children_depth   100% 4 0 0   100% 2 0   100%
ipam/signals.py handle_prefix_saved   57% 7 3 0   75% 4 1   64%
ipam/signals.py handle_prefix_deleted   100% 2 0 0   100% 0 0   100%
ipam/signals.py clear_primary_ip   33% 9 6 0   50% 4 2   38%
ipam/signals.py clear_oob_ip   25% 4 3 0   50% 2 1   33%
ipam/signals.py (no function)   100% 15 0 0   100% 0 0   100%
ipam/tables/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
ipam/tables/asn.py (no function)   100% 30 0 0   100% 0 0   100%
ipam/tables/fhrp.py FHRPGroupTable.value_ip_addresses   0% 1 1 0   100% 0 0   0%
ipam/tables/fhrp.py (no function)   100% 25 0 0   100% 0 0   100%
ipam/tables/ip.py AnnotatedIPAddressTable.render_pk   0% 3 3 0   0% 2 0   0%
ipam/tables/ip.py (no function)   100% 119 0 0   100% 0 0   100%
ipam/tables/services.py (no function)   100% 23 0 0   100% 0 0   100%
ipam/tables/template_code.py (no function)   100% 12 0 0   100% 0 0   100%
ipam/tables/vlans.py (no function)   100% 82 0 0   100% 0 0   100%
ipam/tables/vrfs.py (no function)   100% 25 0 0   100% 0 0   100%
ipam/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
ipam/ui/attrs.py VRFDisplayAttr.__init__   100% 2 0 0   100% 0 0   100%
ipam/ui/attrs.py VRFDisplayAttr.get_context   0% 1 1 0   100% 0 0   0%
ipam/ui/attrs.py VRFDisplayAttr.render   0% 3 3 0   100% 0 0   0%
ipam/ui/attrs.py (no function)   100% 7 0 0   100% 0 0   100%
ipam/ui/panels.py VLANCustomerVLANsPanel.__init__   100% 1 0 0   100% 0 0   100%
ipam/ui/panels.py VLANCustomerVLANsPanel.should_render   0% 2 2 0   100% 0 0   0%
ipam/ui/panels.py (no function)   100% 129 0 0   100% 0 0   100%
ipam/urls.py (no function)   100% 5 0 0   100% 0 0   100%
ipam/utils.py AvailableIPSpace.title   0% 5 5 0   0% 4 0   0%
ipam/utils.py add_requested_prefixes   0% 10 10 0   0% 4 0   0%
ipam/utils.py annotate_ip_space   0% 27 27 0   0% 18 0   0%
ipam/utils.py available_vlans_from_range   0% 15 15 0   0% 10 0   0%
ipam/utils.py add_available_vlans   0% 6 6 0   0% 2 0   0%
ipam/utils.py rebuild_prefixes   0% 25 25 0   0% 16 0   0%
ipam/utils.py rebuild_prefixes.contains   0% 1 1 0   100% 0 0   0%
ipam/utils.py rebuild_prefixes.push_to_stack   0% 3 3 0   0% 2 0   0%
ipam/utils.py get_next_available_prefix   0% 6 6 0   0% 4 0   0%
ipam/utils.py split_port_mapping   100% 2 0 0   100% 0 0   100%
ipam/utils.py normalize_port_mapping   0% 8 8 0   0% 4 0   0%
ipam/utils.py group_port_mappings   0% 5 5 0   0% 2 0   0%
ipam/utils.py group_port_mapping_rows   0% 1 1 0   100% 0 0   0%
ipam/utils.py sorted_int_ports   0% 1 1 0   100% 0 0   0%
ipam/utils.py legacy_protocol_and_ports   0% 8 8 0   0% 4 0   0%
ipam/utils.py PortMappingMatch.__init__   0% 6 6 0   0% 4 0   0%
ipam/utils.py PortMappingMatch.as_sql   0% 14 14 0   0% 6 0   0%
ipam/utils.py port_mapping_q   82% 11 2 0   50% 4 2   73%
ipam/utils.py expand_port_mapping   0% 12 12 0   0% 8 0   0%
ipam/utils.py (no function)   100% 32 0 0   100% 0 0   100%
ipam/validators.py validate_port_mappings   46% 24 13 0   30% 10 1   41%
ipam/validators.py prefix_validator   50% 2 1 0   50% 2 1   50%
ipam/validators.py MaxPrefixLengthValidator.compare   0% 1 1 0   100% 0 0   0%
ipam/validators.py MinPrefixLengthValidator.compare   0% 1 1 0   100% 0 0   0%
ipam/validators.py (no function)   100% 14 0 0   100% 0 0   100%
ipam/views.py VRFView.get_extra_context   0% 6 6 0   100% 0 0   0%
ipam/views.py RIRView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/views.py ASNRangeASNsView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py ASNView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/views.py ChildAvailabilityMixin._get_detection_filterset   0% 5 5 0   0% 4 0   0%
ipam/views.py ChildAvailabilityMixin._has_active_child_filters   0% 18 18 0   0% 14 0   0%
ipam/views.py AggregatePrefixesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py AggregatePrefixesView.prep_table_data   0% 5 5 0   0% 2 0   0%
ipam/views.py AggregatePrefixesView.get_extra_context   0% 2 2 0   100% 0 0   0%
ipam/views.py RoleView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/views.py PrefixView.get_extra_context   0% 10 10 0   0% 2 0   0%
ipam/views.py PrefixPrefixesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py PrefixPrefixesView.prep_table_data   0% 5 5 0   0% 2 0   0%
ipam/views.py PrefixPrefixesView.get_extra_context   0% 2 2 0   100% 0 0   0%
ipam/views.py PrefixIPRangesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py PrefixIPRangesView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/views.py PrefixIPAddressesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py PrefixIPAddressesView.prep_table_data   0% 4 4 0   0% 2 0   0%
ipam/views.py PrefixIPAddressesView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/views.py IPRangeView.get_extra_context   0% 4 4 0   100% 0 0   0%
ipam/views.py IPRangeIPAddressesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py IPAddressView.get_extra_context   0% 12 12 0   0% 4 0   0%
ipam/views.py IPAddressEditView.alter_object   0% 16 16 0   0% 6 0   0%
ipam/views.py IPAddressEditView.get_extra_addanother_params   0% 5 5 0   0% 4 0   0%
ipam/views.py IPAddressAssignView.dispatch   0% 3 3 0   0% 2 0   0%
ipam/views.py IPAddressAssignView.get   0% 2 2 0   100% 0 0   0%
ipam/views.py IPAddressAssignView.post   0% 8 8 0   0% 2 0   0%
ipam/views.py IPAddressRelatedIPsView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py VLANGroupView.get_extra_context   0% 1 1 0   100% 0 0   0%
ipam/views.py VLANGroupVLANsView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py VLANGroupVLANsView.prep_table_data   0% 3 3 0   0% 2 0   0%
ipam/views.py FHRPGroupView.get_extra_context   0% 4 4 0   100% 0 0   0%
ipam/views.py FHRPGroupEditView.get_return_url   0% 4 4 0   0% 2 0   0%
ipam/views.py FHRPGroupEditView.alter_object   0% 2 2 0   100% 0 0   0%
ipam/views.py FHRPGroupAssignmentEditView.alter_object   0% 4 4 0   0% 2 0   0%
ipam/views.py FHRPGroupAssignmentEditView.get_extra_addanother_params   0% 1 1 0   100% 0 0   0%
ipam/views.py VLANInterfacesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py VLANVMInterfacesView.get_children   0% 1 1 0   100% 0 0   0%
ipam/views.py ServicePortMappingsBulkEditMixin.pre_save_operations   0% 7 7 0   0% 4 0   0%
ipam/views.py ServiceView.get_extra_context   0% 9 9 0   0% 6 0   0%
ipam/views.py (no function)   100% 825 0 0   100% 0 0   100%
manage.py (no function)   100% 6 0 0   50% 2 1   88%
netbox/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
netbox/__main__.py (no function)   0% 4 4 0   0% 2 0   0%
netbox/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
netbox/api/authentication.py TokenAuthentication.authenticate   51% 53 26 0   47% 34 10   49%
netbox/api/authentication.py TokenPermissions.__init__   100% 2 0 0   100% 0 0   100%
netbox/api/authentication.py TokenPermissions._verify_write_permission   67% 3 1 0   50% 2 1   60%
netbox/api/authentication.py TokenPermissions.has_permission   67% 3 1 0   50% 2 1   60%
netbox/api/authentication.py TokenPermissions.has_object_permission   67% 3 1 0   50% 2 1   60%
netbox/api/authentication.py TokenWritePermission.has_permission   67% 3 1 0   50% 2 1   60%
netbox/api/authentication.py IsAuthenticatedOrLoginNotRequired.has_permission   67% 3 1 0   50% 2 1   60%
netbox/api/authentication.py TokenScheme.get_security_definition   100% 1 0 0   100% 0 0   100%
netbox/api/authentication.py (no function)   100% 33 0 0   100% 0 0   100%
netbox/api/exceptions.py (no function)   100% 10 0 0   100% 0 0   100%
netbox/api/features.py SyncedDataMixin.get_permissions   100% 3 0 0   100% 2 0   100%
netbox/api/features.py SyncedDataMixin.sync   83% 6 1 0   50% 2 1   75%
netbox/api/features.py (no function)   100% 9 0 0   100% 0 0   100%
netbox/api/fields.py ChoiceField.__init__   100% 9 0 0   100% 6 0   100%
netbox/api/fields.py ChoiceField.validate_empty_values   100% 5 0 0   100% 4 0   100%
netbox/api/fields.py ChoiceField.to_representation   100% 3 0 0   100% 2 0   100%
netbox/api/fields.py ChoiceField.to_internal_value   81% 21 4 0   86% 14 2   83%
netbox/api/fields.py ChoiceField.choices   100% 1 0 0   100% 0 0   100%
netbox/api/fields.py ContentTypeField.to_internal_value   86% 7 1 0   100% 0 0   86%
netbox/api/fields.py ContentTypeField.to_representation   100% 1 0 0   100% 0 0   100%
netbox/api/fields.py IPNetworkSerializer.to_representation   0% 1 1 0   100% 0 0   0%
netbox/api/fields.py IPNetworkSerializer.to_internal_value   0% 1 1 0   100% 0 0   0%
netbox/api/fields.py SerializedPKRelatedField.__init__   100% 4 0 0   100% 0 0   100%
netbox/api/fields.py SerializedPKRelatedField.to_representation   0% 1 1 0   100% 0 0   0%
netbox/api/fields.py RelatedObjectCountField.__init__   100% 2 0 0   100% 0 0   100%
netbox/api/fields.py IntegerRangeSerializer.to_internal_value   60% 5 2 0   50% 4 2   56%
netbox/api/fields.py IntegerRangeSerializer.to_representation   100% 1 0 0   100% 0 0   100%
netbox/api/fields.py AttributesField.to_internal_value   0% 5 5 0   0% 2 0   0%
netbox/api/fields.py (no function)   100% 37 0 0   100% 0 0   100%
netbox/api/gfk_fields.py GFKSerializerField.__init__   100% 2 0 0   100% 0 0   100%
netbox/api/gfk_fields.py GFKSerializerField.to_representation   88% 8 1 0   75% 4 1   83%
netbox/api/gfk_fields.py (no function)   100% 8 0 0   100% 0 0   100%
netbox/api/metadata.py BulkOperationMetadata.determine_actions   79% 14 3 0   67% 6 2   75%
netbox/api/metadata.py ContentTypeMetadata.get_field_info   100% 5 0 0   100% 2 0   100%
netbox/api/metadata.py (no function)   100% 11 0 0   100% 0 0   100%
netbox/api/pagination.py NetBoxPagination.__init__   100% 4 0 0   100% 0 0   100%
netbox/api/pagination.py NetBoxPagination.paginate_queryset   86% 29 4 0   78% 18 4   83%
netbox/api/pagination.py NetBoxPagination.get_start   100% 9 0 0   100% 2 0   100%
netbox/api/pagination.py NetBoxPagination.get_limit   94% 17 1 0   70% 10 3   85%
netbox/api/pagination.py NetBoxPagination.get_queryset_count   100% 1 0 0   100% 0 0   100%
netbox/api/pagination.py NetBoxPagination.get_next_link   45% 11 6 0   67% 6 2   53%
netbox/api/pagination.py NetBoxPagination.get_previous_link   80% 5 1 0   75% 4 1   78%
netbox/api/pagination.py NetBoxPagination.get_schema_operation_parameters   100% 3 0 0   100% 0 0   100%
netbox/api/pagination.py StripCountAnnotationsPaginator.get_queryset_count   100% 3 0 0   100% 0 0   100%
netbox/api/pagination.py LimitOffsetListPagination.paginate_list   91% 11 1 0   67% 6 2   82%
netbox/api/pagination.py (no function)   100% 23 0 0   100% 0 0   100%
netbox/api/renderers.py FormlessBrowsableAPIRenderer.show_form_for_method   0% 1 1 0   100% 0 0   0%
netbox/api/renderers.py FormlessBrowsableAPIRenderer.get_filter_form   0% 1 1 0   100% 0 0   0%
netbox/api/renderers.py TextRenderer.render   100% 1 0 0   100% 0 0   100%
netbox/api/renderers.py (no function)   100% 9 0 0   100% 0 0   100%
netbox/api/routers.py NetBoxRouter.__init__   100% 2 0 0   100% 0 0   100%
netbox/api/routers.py NetBoxRouter.get_api_root_view   100% 5 0 0   100% 2 0   100%
netbox/api/routers.py (no function)   100% 4 0 0   100% 0 0   100%
netbox/api/serializers/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
netbox/api/serializers/base.py BaseModelSerializer.__init__   100% 8 0 0   100% 4 0   100%
netbox/api/serializers/base.py BaseModelSerializer.to_internal_value   100% 6 0 0   100% 2 0   100%
netbox/api/serializers/base.py BaseModelSerializer.fields   100% 11 0 0   100% 12 0   100%
netbox/api/serializers/base.py BaseModelSerializer.get_display   100% 1 0 0   100% 0 0   100%
netbox/api/serializers/base.py ValidatedModelSerializer.get_unique_together_constraints   100% 1 0 0   100% 0 0   100%
netbox/api/serializers/base.py ValidatedModelSerializer.validate   100% 20 0 0   100% 14 0   100%
netbox/api/serializers/base.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/api/serializers/bulk.py BulkUpdateSchemaMixin.get_fields   100% 5 0 0   100% 0 0   100%
netbox/api/serializers/bulk.py BulkPartialUpdateSchemaMixin.get_fields   100% 5 0 0   100% 4 0   100%
netbox/api/serializers/bulk.py get_bulk_update_serializer_class   91% 11 1 0   50% 2 1   85%
netbox/api/serializers/bulk.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/api/serializers/features.py CustomFieldModelSerializer.many_init   90% 10 1 0   75% 4 1   86%
netbox/api/serializers/features.py TaggableModelSerializer.to_internal_value   86% 7 1 0   83% 6 1   85%
netbox/api/serializers/features.py TaggableModelSerializer.validate   55% 20 9 0   50% 14 5   53%
netbox/api/serializers/features.py TaggableModelSerializer.create   89% 9 1 0   75% 4 1   85%
netbox/api/serializers/features.py TaggableModelSerializer.update   79% 14 3 0   62% 8 3   73%
netbox/api/serializers/features.py TaggableModelSerializer._save_tags   67% 6 2 0   50% 2 1   62%
netbox/api/serializers/features.py ChangeLogMessageSerializer.to_internal_value   75% 4 1 0   50% 2 1   67%
netbox/api/serializers/features.py ChangeLogMessageSerializer.save   100% 3 0 0   100% 2 0   100%
netbox/api/serializers/features.py (no function)   100% 25 0 0   100% 0 0   100%
netbox/api/serializers/fields.py BaseNetBoxHyperlinkedIdentityField.__init__   100% 1 0 0   100% 0 0   100%
netbox/api/serializers/fields.py BaseNetBoxHyperlinkedIdentityField.get_url   83% 6 1 0   50% 2 1   75%
netbox/api/serializers/fields.py BaseNetBoxHyperlinkedIdentityField.get_view_name   0% 1 1 0   100% 0 0   0%
netbox/api/serializers/fields.py NetBoxAPIHyperlinkedIdentityField.get_view_name   100% 1 0 0   100% 0 0   100%
netbox/api/serializers/fields.py NetBoxURLHyperlinkedIdentityField.get_view_name   100% 1 0 0   100% 0 0   100%
netbox/api/serializers/fields.py (no function)   100% 12 0 0   100% 0 0   100%
netbox/api/serializers/generic.py GenericObjectSerializer.__init__   100% 2 0 0   100% 0 0   100%
netbox/api/serializers/generic.py GenericObjectSerializer.to_internal_value   0% 3 3 0   100% 0 0   0%
netbox/api/serializers/generic.py GenericObjectSerializer.to_representation   0% 5 5 0   0% 2 0   0%
netbox/api/serializers/generic.py GenericObjectSerializer.get_object   0% 4 4 0   0% 2 0   0%
netbox/api/serializers/generic.py (no function)   100% 17 0 0   100% 0 0   100%
netbox/api/serializers/models.py (no function)   100% 10 0 0   100% 0 0   100%
netbox/api/serializers/nested.py WritableNestedSerializer.to_internal_value   100% 4 0 0   100% 0 0   100%
netbox/api/serializers/nested.py (no function)   100% 10 0 0   100% 0 0   100%
netbox/api/views.py APIRootView.get_view_name   0% 1 1 0   100% 0 0   0%
netbox/api/views.py APIRootView.get   0% 1 1 0   100% 0 0   0%
netbox/api/views.py StatusView.get   100% 1 0 0   100% 0 0   100%
netbox/api/views.py AuthenticationCheckView.get   100% 2 0 0   100% 0 0   100%
netbox/api/views.py (no function)   100% 27 0 0   100% 0 0   100%
netbox/api/viewsets/__init__.py ETagMixin._get_etag   100% 3 0 0   100% 2 0   100%
netbox/api/viewsets/__init__.py ETagMixin._get_if_match   67% 3 1 0   50% 2 1   60%
netbox/api/viewsets/__init__.py ETagMixin._validate_etag   25% 4 3 0   25% 4 1   25%
netbox/api/viewsets/__init__.py ETagMixin.handle_exception   75% 4 1 0   50% 2 1   67%
netbox/api/viewsets/__init__.py ETagMixin.retrieve   100% 6 0 0   100% 2 0   100%
netbox/api/viewsets/__init__.py BaseViewSet.initial   83% 6 1 0   67% 6 2   75%
netbox/api/viewsets/__init__.py BaseViewSet.initialize_request   100% 2 0 0   100% 0 0   100%
netbox/api/viewsets/__init__.py BaseViewSet.get_queryset   100% 7 0 0   100% 4 0   100%
netbox/api/viewsets/__init__.py BaseViewSet.get_serializer   100% 2 0 0   100% 0 0   100%
netbox/api/viewsets/__init__.py BaseViewSet.field_kwargs   100% 9 0 0   100% 8 0   100%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.get_object_with_snapshot   100% 4 0 0   100% 2 0   100%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.get_queryset   100% 2 0 0   100% 0 0   100%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.get_serializer   67% 3 1 0   50% 2 1   60%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.dispatch   79% 14 3 0   50% 2 1   75%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.exception_to_response   0% 13 13 0   0% 6 0   0%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.create   93% 14 1 0   83% 6 1   90%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.perform_create   80% 10 2 0   100% 0 0   80%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.update   100% 12 0 0   100% 2 0   100%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.perform_update   69% 13 4 0   50% 2 1   67%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.destroy   100% 7 0 0   100% 0 0   100%
netbox/api/viewsets/__init__.py NetBoxModelViewSet.perform_destroy   75% 12 3 0   50% 2 1   71%
netbox/api/viewsets/__init__.py MPTTLockedMixin.__init_subclass__   0% 2 2 0   100% 0 0   0%
netbox/api/viewsets/__init__.py (no function)   100% 50 0 0   100% 0 0   100%
netbox/api/viewsets/mixins.py resolve_bulk_error_status   83% 6 1 0   83% 6 1   83%
netbox/api/viewsets/mixins.py get_non_list_response   100% 7 0 0   100% 4 0   100%
netbox/api/viewsets/mixins.py _as_field_errors   67% 3 1 0   50% 2 1   60%
netbox/api/viewsets/mixins.py get_invalid_entries_response   80% 5 1 0   50% 2 1   71%
netbox/api/viewsets/mixins.py get_duplicate_objects_response   100% 4 0 0   100% 2 0   100%
netbox/api/viewsets/mixins.py get_missing_objects_response   100% 5 0 0   100% 2 0   100%
netbox/api/viewsets/mixins.py discard_events_on_rollback   100% 7 0 0   100% 2 0   100%
netbox/api/viewsets/mixins.py BackgroundOperationMixin.check_background_enabled   0% 2 2 0   0% 2 0   0%
netbox/api/viewsets/mixins.py BackgroundOperationMixin._background_requested   67% 3 1 0   50% 2 1   60%
netbox/api/viewsets/mixins.py BackgroundOperationMixin._handle_background_request   67% 3 1 0   50% 2 1   60%
netbox/api/viewsets/mixins.py BackgroundOperationMixin._enqueue_bulk_job   0% 16 16 0   0% 4 0   0%
netbox/api/viewsets/mixins.py CustomFieldsMixin.get_serializer_context   100% 5 0 0   100% 2 0   100%
netbox/api/viewsets/mixins.py ExportTemplatesMixin.list   25% 8 6 0   25% 4 1   25%
netbox/api/viewsets/mixins.py BulkCreateModelMixin.bulk_create   89% 9 1 0   75% 4 1   85%
netbox/api/viewsets/mixins.py BulkCreateModelMixin.perform_bulk_create   78% 27 6 0   100% 8 0   83%
netbox/api/viewsets/mixins.py BulkUpdateModelMixin.get_bulk_update_queryset   100% 1 0 0   100% 0 0   100%
netbox/api/viewsets/mixins.py BulkUpdateModelMixin.bulk_update   91% 23 2 0   83% 12 2   89%
netbox/api/viewsets/mixins.py BulkUpdateModelMixin.perform_bulk_update   31% 26 18 0   25% 8 2   29%
netbox/api/viewsets/mixins.py BulkUpdateModelMixin.get_bulk_update_serializer_class   100% 1 0 0   100% 0 0   100%
netbox/api/viewsets/mixins.py BulkUpdateModelMixin.get_bulk_update_request_serializer   100% 2 0 0   100% 0 0   100%
netbox/api/viewsets/mixins.py BulkUpdateModelMixin.bulk_partial_update   100% 2 0 0   100% 0 0   100%
netbox/api/viewsets/mixins.py BulkDestroyModelMixin.get_bulk_destroy_queryset   100% 1 0 0   100% 0 0   100%
netbox/api/viewsets/mixins.py BulkDestroyModelMixin.bulk_destroy   79% 19 4 0   67% 12 4   74%
netbox/api/viewsets/mixins.py BulkDestroyModelMixin.perform_bulk_destroy   33% 27 18 0   33% 6 2   33%
netbox/api/viewsets/mixins.py ObjectValidationMixin._validate_objects   67% 6 2 0   67% 6 2   67%
netbox/api/viewsets/mixins.py (no function)   100% 58 0 0   100% 0 0   100%
netbox/authentication/__init__.py get_auth_backend_display   0% 1 1 0   100% 0 0   0%
netbox/authentication/__init__.py get_saml_idps   100% 1 0 0   100% 0 0   100%
netbox/authentication/__init__.py ObjectPermissionMixin.get_all_permissions   0% 5 5 0   0% 4 0   0%
netbox/authentication/__init__.py ObjectPermissionMixin.get_permission_filter   0% 1 1 0   100% 0 0   0%
netbox/authentication/__init__.py ObjectPermissionMixin.get_object_permissions   0% 13 13 0   0% 10 0   0%
netbox/authentication/__init__.py ObjectPermissionMixin.has_perm   20% 25 20 0   25% 12 3   22%
netbox/authentication/__init__.py RemoteUserBackend.create_unknown_user   0% 1 1 0   100% 0 0   0%
netbox/authentication/__init__.py RemoteUserBackend.configure_groups   0% 19 19 0   0% 6 0   0%
netbox/authentication/__init__.py RemoteUserBackend.authenticate   0% 20 20 0   0% 12 0   0%
netbox/authentication/__init__.py RemoteUserBackend._is_superuser   0% 12 12 0   0% 2 0   0%
netbox/authentication/__init__.py RemoteUserBackend._is_staff   0% 1 1 0   100% 0 0   0%
netbox/authentication/__init__.py RemoteUserBackend.configure_user   0% 26 26 0   0% 10 0   0%
netbox/authentication/__init__.py RemoteUserBackend.has_perm   100% 1 0 0   100% 0 0   100%
netbox/authentication/__init__.py NBLDAPBackend.get_permission_filter   0% 4 4 0   0% 2 0   0%
netbox/authentication/__init__.py LDAPBackend.__new__   0% 25 25 0   0% 12 0   0%
netbox/authentication/__init__.py user_default_groups_handler   0% 11 11 0   0% 6 0   0%
netbox/authentication/__init__.py (no function)   96% 45 2 0   100% 0 0   96%
netbox/authentication/misc.py _mirror_groups   0% 13 13 0   0% 6 0   0%
netbox/authentication/misc.py (no function)   100% 2 0 0   100% 0 0   100%
netbox/choices.py (no function)   100% 90 0 0   100% 0 0   100%
netbox/cli.py _prog   0% 5 5 0   0% 4 0   0%
netbox/cli.py _print_version   0% 4 4 0   100% 0 0   0%
netbox/cli.py _build_parser   0% 6 6 0   100% 0 0   0%
netbox/cli.py main   0% 26 26 0   0% 12 0   0%
netbox/cli.py (no function)   0% 10 10 0   100% 0 0   0%
netbox/config/__init__.py get_config   100% 4 0 0   100% 2 0   100%
netbox/config/__init__.py clear_config   100% 3 0 0   50% 2 1   80%
netbox/config/__init__.py Config.__init__   100% 4 0 0   100% 2 0   100%
netbox/config/__init__.py Config.__getattr__   71% 7 2 0   67% 6 2   69%
netbox/config/__init__.py Config._populate_from_cache   86% 7 1 0   50% 2 1   78%
netbox/config/__init__.py Config._populate_from_db   58% 19 8 0   50% 2 1   57%
netbox/config/__init__.py ConfigItem.__init__   100% 1 0 0   100% 0 0   100%
netbox/config/__init__.py ConfigItem.__call__   100% 2 0 0   100% 0 0   100%
netbox/config/__init__.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/config/parameters.py ConfigParam.__init__   100% 6 0 0   100% 0 0   100%
netbox/config/parameters.py (no function)   100% 6 0 0   100% 0 0   100%
netbox/configuration.py _filename   100% 1 0 0   100% 0 0   100%
netbox/configuration.py _import   100% 6 0 0   100% 0 0   100%
netbox/configuration.py read_configurations   74% 23 6 0   69% 16 5   72%
netbox/configuration.py __getattr__   100% 6 0 0   100% 2 0   100%
netbox/configuration.py __dir__   100% 4 0 0   100% 2 0   100%
netbox/configuration.py (no function)   100% 10 0 0   100% 0 0   100%
netbox/configuration_example.py (no function)   0% 39 39 0   100% 0 0   0%
netbox/configuration_testing.py (no function)   0% 9 9 0   100% 0 0   0%
netbox/constants.py (no function)   100% 9 0 0   100% 0 0   100%
netbox/context.py (no function)   100% 5 0 0   100% 0 0   100%
netbox/context_managers.py event_tracking   100% 10 0 0   100% 2 0   100%
netbox/context_managers.py (no function)   100% 8 0 0   100% 0 0   100%
netbox/context_processors.py config   100% 1 0 0   100% 0 0   100%
netbox/context_processors.py preferences   100% 3 0 0   100% 0 0   100%
netbox/context_processors.py registry   100% 1 0 0   100% 0 0   100%
netbox/context_processors.py settings   100% 1 0 0   100% 0 0   100%
netbox/context_processors.py (no function)   100% 8 0 0   100% 0 0   100%
netbox/data_backends.py DataBackend.__init__   0% 3 3 0   100% 0 0   0%
netbox/data_backends.py DataBackend.init_config   0% 1 1 0   100% 0 0   0%
netbox/data_backends.py DataBackend.url_scheme   0% 1 1 0   100% 0 0   0%
netbox/data_backends.py DataBackend.fetch   0% 1 1 0   100% 0 0   0%
netbox/data_backends.py (no function)   100% 14 0 0   100% 0 0   100%
netbox/event_rules.py EventRuleAction.__repr__   0% 1 1 0   100% 0 0   0%
netbox/event_rules.py EventRuleAction.get_object_queryset   0% 3 3 0   0% 2 0   0%
netbox/event_rules.py EventRuleAction.get_object_label   0% 5 5 0   0% 4 0   0%
netbox/event_rules.py EventRuleAction.resolve_import_object   0% 1 1 0   100% 0 0   0%
netbox/event_rules.py EventRuleAction._validate   0% 8 8 0   0% 8 0   0%
netbox/event_rules.py EventRuleAction.validate   0% 1 1 0   100% 0 0   0%
netbox/event_rules.py EventRuleAction.enqueue   0% 1 1 0   100% 0 0   0%
netbox/event_rules.py register_event_rule_action   67% 18 6 0   57% 14 6   62%
netbox/event_rules.py get_event_rule_action   0% 1 1 0   100% 0 0   0%
netbox/event_rules.py get_event_rule_action_choices   100% 1 0 0   100% 0 0   100%
netbox/event_rules.py get_event_rule_action_slugs   100% 1 0 0   100% 0 0   100%
netbox/event_rules.py (no function)   100% 28 0 0   100% 0 0   100%
netbox/events.py get_event_type   0% 1 1 0   100% 0 0   0%
netbox/events.py get_event_text   0% 3 3 0   0% 2 0   0%
netbox/events.py get_event_type_choices   100% 1 0 0   100% 0 0   100%
netbox/events.py EventType.__str__   0% 1 1 0   100% 0 0   0%
netbox/events.py EventType.register   67% 3 1 0   50% 2 1   60%
netbox/events.py EventType.color   0% 1 1 0   100% 0 0   0%
netbox/events.py EventType.icon   0% 1 1 0   100% 0 0   0%
netbox/events.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/filtersets.py BaseFilterSet.__init__   14% 21 18 0   7% 14 1   11%
netbox/filtersets.py BaseFilterSet._get_filter_lookup_dict   92% 13 1 0   92% 12 1   92%
netbox/filtersets.py BaseFilterSet.get_additional_lookups   92% 36 3 0   91% 22 2   91%
netbox/filtersets.py BaseFilterSet.get_filters   100% 6 0 0   100% 2 0   100%
netbox/filtersets.py BaseFilterSet.filter_for_lookup   100% 3 0 0   100% 2 0   100%
netbox/filtersets.py ChangeLoggedModelFilterSet.filter_by_request   100% 5 0 0   100% 0 0   100%
netbox/filtersets.py NetBoxModelFilterSet.__init__   36% 11 7 0   17% 6 1   29%
netbox/filtersets.py NetBoxModelFilterSet.search   0% 1 1 0   100% 0 0   0%
netbox/filtersets.py OrganizationalModelFilterSet.search   0% 3 3 0   0% 2 0   0%
netbox/filtersets.py NestedGroupModelFilterSet.search   0% 3 3 0   0% 2 0   0%
netbox/filtersets.py AttributeFiltersMixin.__init__   56% 9 4 0   67% 6 2   60%
netbox/filtersets.py AttributeFiltersMixin._get_field_lookup   50% 4 2 0   50% 2 1   50%
netbox/filtersets.py AttributeFiltersMixin.filter_queryset   100% 1 0 0   100% 0 0   100%
netbox/filtersets.py (no function)   100% 58 0 0   100% 0 0   100%
netbox/forms/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
netbox/forms/bulk_edit.py NetBoxModelBulkEditForm.__init__   0% 6 6 0   100% 0 0   0%
netbox/forms/bulk_edit.py NetBoxModelBulkEditForm._get_form_field   0% 1 1 0   100% 0 0   0%
netbox/forms/bulk_edit.py NetBoxModelBulkEditForm._extend_nullable_fields   0% 3 3 0   100% 0 0   0%
netbox/forms/bulk_edit.py (no function)   100% 26 0 0   100% 0 0   100%
netbox/forms/bulk_import.py NetBoxModelImportForm._get_custom_fields   0% 1 1 0   100% 0 0   0%
netbox/forms/bulk_import.py NetBoxModelImportForm._get_form_field   0% 1 1 0   100% 0 0   0%
netbox/forms/bulk_import.py NetBoxModelImportForm.clean   0% 16 16 0   0% 12 0   0%
netbox/forms/bulk_import.py NetBoxModelImportForm._update_errors   0% 16 16 0   0% 14 0   0%
netbox/forms/bulk_import.py (no function)   100% 25 0 0   100% 0 0   100%
netbox/forms/bulk_rename.py (no function)   100% 5 0 0   100% 0 0   100%
netbox/forms/filtersets.py NetBoxModelFilterSetForm._get_custom_fields   0% 1 1 0   100% 0 0   0%
netbox/forms/filtersets.py NetBoxModelFilterSetForm._get_form_field   0% 1 1 0   100% 0 0   0%
netbox/forms/filtersets.py (no function)   100% 18 0 0   100% 0 0   100%
netbox/forms/mixins.py ChangelogMessageMixin.__init__   0% 4 4 0   0% 2 0   0%
netbox/forms/mixins.py CustomFieldsMixin.__init__   0% 4 4 0   100% 0 0   0%
netbox/forms/mixins.py CustomFieldsMixin._get_content_type   0% 3 3 0   0% 2 0   0%
netbox/forms/mixins.py CustomFieldsMixin._get_custom_fields   0% 1 1 0   100% 0 0   0%
netbox/forms/mixins.py CustomFieldsMixin._get_form_field   0% 1 1 0   100% 0 0   0%
netbox/forms/mixins.py CustomFieldsMixin._append_customfield_fields   0% 7 7 0   0% 4 0   0%
netbox/forms/mixins.py SavedFiltersMixin.__init__   0% 5 5 0   0% 2 0   0%
netbox/forms/mixins.py TagsMixin.__init__   0% 4 4 0   0% 2 0   0%
netbox/forms/mixins.py (no function)   100% 30 0 0   100% 0 0   100%
netbox/forms/model_forms.py NetBoxModelForm._get_content_type   0% 1 1 0   100% 0 0   0%
netbox/forms/model_forms.py NetBoxModelForm._get_form_field   0% 8 8 0   0% 4 0   0%
netbox/forms/model_forms.py NetBoxModelForm.clean   0% 11 11 0   0% 8 0   0%
netbox/forms/model_forms.py NetBoxModelForm._post_clean   0% 12 12 0   0% 6 0   0%
netbox/forms/model_forms.py NetBoxModelForm._save_m2m   0% 5 5 0   0% 4 0   0%
netbox/forms/model_forms.py (no function)   100% 24 0 0   100% 0 0   100%
netbox/forms/search.py SearchForm.__init__   0% 2 2 0   100% 0 0   0%
netbox/forms/search.py SearchForm.clean   0% 5 5 0   0% 2 0   0%
netbox/forms/search.py (no function)   100% 12 0 0   100% 0 0   100%
netbox/granian.py (no function)   0% 3 3 0   100% 0 0   0%
netbox/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
netbox/graphql/apps.py GraphQLConfig.ready   100% 3 0 0   100% 0 0   100%
netbox/graphql/apps.py (no function)   100% 5 0 0   100% 0 0   100%
netbox/graphql/enums.py (no function)   100% 6 0 0   100% 0 0   100%
netbox/graphql/filter_lookups.py _validate_json_path   0% 8 8 0   0% 8 0   0%
netbox/graphql/filter_lookups.py JSONLookup.get_filter   0% 5 5 0   0% 4 0   0%
netbox/graphql/filter_lookups.py _NumericLookupMixin.get_filter   0% 5 5 0   0% 4 0   0%
netbox/graphql/filter_lookups.py _NumericLookupMixin.filter   0% 6 6 0   0% 4 0   0%
netbox/graphql/filter_lookups.py JSONFilter.filter   0% 9 9 0   0% 2 0   0%
netbox/graphql/filter_lookups.py TreeNodeFilter.filter   0% 16 16 0   0% 4 0   0%
netbox/graphql/filter_lookups.py generate_tree_node_q_filter   0% 21 21 0   0% 16 0   0%
netbox/graphql/filter_lookups.py ArrayLookup.filter   0% 9 9 0   0% 8 0   0%
netbox/graphql/filter_lookups.py RangeArrayValueLookup.filter   0% 3 3 0   0% 2 0   0%
netbox/graphql/filter_lookups.py (no function)   100% 138 0 0   100% 0 0   100%
netbox/graphql/filter_mixins.py (no function)   90% 31 3 0   50% 2 1   88%
netbox/graphql/filters.py register_filter   100% 1 0 0   100% 0 0   100%
netbox/graphql/filters.py (no function)   97% 35 1 0   50% 2 1   95%
netbox/graphql/optimization.py optimize_prefetch_queryset   0% 3 3 0   0% 2 0   0%
netbox/graphql/optimization.py build_gfk_prefetch   100% 2 0 0   100% 0 0   100%
netbox/graphql/optimization.py build_gfk_prefetch.prefetch   0% 2 2 0   100% 0 0   0%
netbox/graphql/optimization.py (no function)   100% 9 0 0   100% 0 0   100%
netbox/graphql/pagination.py apply_distinct_window_pagination   0% 9 9 0   0% 4 0   0%
netbox/graphql/pagination.py apply_pagination   0% 20 20 0   0% 18 0   0%
netbox/graphql/pagination.py (no function)   100% 17 0 0   100% 0 0   100%
netbox/graphql/scalars.py (no function)   100% 4 0 0   100% 0 0   100%
netbox/graphql/schema.py get_schema_extensions   83% 6 1 0   50% 2 1   75%
netbox/graphql/schema.py (no function)   100% 26 0 0   100% 0 0   100%
netbox/graphql/types.py register_type   100% 1 0 0   100% 0 0   100%
netbox/graphql/types.py BaseObjectType.get_queryset   0% 3 3 0   0% 2 0   0%
netbox/graphql/types.py BaseObjectType.display   0% 1 1 0   100% 0 0   0%
netbox/graphql/types.py BaseObjectType.class_type   0% 1 1 0   100% 0 0   0%
netbox/graphql/types.py LtreeNodeMixin.level   0% 5 5 0   0% 2 0   0%
netbox/graphql/types.py (no function)   100% 42 0 0   100% 0 0   100%
netbox/graphql/utils.py get_model_label   100% 1 0 0   100% 0 0   100%
netbox/graphql/utils.py _own_names   0% 3 3 0   100% 0 0   0%
netbox/graphql/utils.py _field_names   0% 4 4 0   0% 2 0   0%
netbox/graphql/utils.py _all_names   0% 5 5 0   0% 4 0   0%
netbox/graphql/utils.py _name_owner   0% 4 4 0   0% 4 0   0%
netbox/graphql/utils.py _core_names   0% 6 6 0   0% 4 0   0%
netbox/graphql/utils.py _class_path   0% 1 1 0   100% 0 0   0%
netbox/graphql/utils.py _compose   0% 5 5 0   100% 0 0   0%
netbox/graphql/utils.py splice_extension_bases   0% 17 17 0   0% 14 0   0%
netbox/graphql/utils.py validate_extension_final_names   0% 18 18 0   0% 12 0   0%
netbox/graphql/utils.py validate_extension_targets   43% 7 4 0   50% 6 1   46%
netbox/graphql/utils.py register_model_graphql_type   100% 3 0 0   100% 0 0   100%
netbox/graphql/utils.py register_model_graphql_type.wrapper   55% 11 5 0   25% 4 1   47%
netbox/graphql/utils.py (no function)   100% 15 0 0   100% 0 0   100%
netbox/graphql/views.py NetBoxGraphQLView.dispatch   0% 16 16 0   0% 10 0   0%
netbox/graphql/views.py (no function)   100% 12 0 0   100% 0 0   100%
netbox/jobs.py system_job   75% 4 1 0   50% 2 1   67%
netbox/jobs.py system_job._wrapper   100% 2 0 0   100% 0 0   100%
netbox/jobs.py JobLogHandler.__init__   0% 2 2 0   100% 0 0   0%
netbox/jobs.py JobLogHandler.emit   0% 1 1 0   100% 0 0   0%
netbox/jobs.py JobRunner.__init__   0% 4 4 0   100% 0 0   0%
netbox/jobs.py JobRunner.name   100% 1 0 0   100% 0 0   100%
netbox/jobs.py JobRunner.run   0% 1 1 0   100% 0 0   0%
netbox/jobs.py JobRunner.handle   0% 32 32 0   0% 10 0   0%
netbox/jobs.py JobRunner.get_jobs   60% 5 2 0   50% 2 1   57%
netbox/jobs.py JobRunner.enqueue   100% 2 0 0   100% 0 0   100%
netbox/jobs.py JobRunner.enqueue_once   50% 6 3 0   25% 4 1   40%
netbox/jobs.py AsyncViewJob.run   0% 6 6 0   0% 2 0   0%
netbox/jobs.py AsyncAPIJob._build_request   0% 8 8 0   0% 4 0   0%
netbox/jobs.py AsyncAPIJob.run   0% 46 46 0   0% 10 0   0%
netbox/jobs.py (no function)   100% 60 0 0   100% 0 0   100%
netbox/ldap_config.py __getattr__   0% 6 6 0   0% 2 0   0%
netbox/ldap_config.py __dir__   0% 4 4 0   0% 2 0   0%
netbox/ldap_config.py (no function)   0% 4 4 0   100% 0 0   0%
netbox/metrics.py Metrics.register   0% 4 4 0   100% 0 0   0%
netbox/metrics.py (no function)   100% 6 0 0   100% 0 0   100%
netbox/middleware.py CommonMiddleware.should_redirect_with_slash   100% 3 0 0   100% 2 0   100%
netbox/middleware.py CoreMiddleware.__init__   100% 1 0 0   100% 0 0   100%
netbox/middleware.py CoreMiddleware.__call__   81% 16 3 0   62% 8 3   75%
netbox/middleware.py CoreMiddleware.process_exception   22% 18 14 0   14% 14 2   19%
netbox/middleware.py RemoteUserMiddleware.__init__   67% 3 1 0   50% 2 1   60%
netbox/middleware.py RemoteUserMiddleware.header   0% 1 1 0   100% 0 0   0%
netbox/middleware.py RemoteUserMiddleware.__call__   10% 30 27 0   5% 20 1   8%
netbox/middleware.py RemoteUserMiddleware._get_groups   0% 7 7 0   0% 2 0   0%
netbox/middleware.py PrometheusAfterMiddleware.process_response   0% 9 9 0   0% 4 0   0%
netbox/middleware.py MaintenanceModeMiddleware.__init__   100% 1 0 0   100% 0 0   100%
netbox/middleware.py MaintenanceModeMiddleware.__call__   67% 3 1 0   50% 2 1   60%
netbox/middleware.py MaintenanceModeMiddleware._set_session_type   0% 3 3 0   100% 0 0   0%
netbox/middleware.py MaintenanceModeMiddleware.process_exception   29% 7 5 0   25% 4 1   27%
netbox/middleware.py SocialAuthExceptionMiddleware.get_message   0% 1 1 0   100% 0 0   0%
netbox/middleware.py (no function)   100% 49 0 0   100% 0 0   100%
netbox/models/__init__.py NetBoxFeatureSet.docs_url   0% 1 1 0   100% 0 0   0%
netbox/models/__init__.py NetBoxFeatureSet.get_absolute_url   0% 2 2 0   100% 0 0   0%
netbox/models/__init__.py BaseModel._coerce_nullable_unique_chars   67% 3 1 0   75% 4 1   71%
netbox/models/__init__.py BaseModel.clean   88% 17 2 0   80% 10 2   85%
netbox/models/__init__.py BaseModel.save   100% 2 0 0   100% 0 0   100%
netbox/models/__init__.py NestedGroupModelMixin.__str__   100% 1 0 0   100% 0 0   100%
netbox/models/__init__.py NestedGroupModel.clean   0% 3 3 0   0% 2 0   0%
netbox/models/__init__.py OrganizationalModel.__str__   100% 1 0 0   100% 0 0   100%
netbox/models/__init__.py (no function)   100% 74 0 0   100% 0 0   100%
netbox/models/deletion.py CountOnly.__init__   0% 1 1 0   100% 0 0   0%
netbox/models/deletion.py CountOnly.__len__   0% 1 1 0   100% 0 0   0%
netbox/models/deletion.py CountOnly.__iter__   0% 1 1 0   100% 0 0   0%
netbox/models/deletion.py ConfirmCollector.__init__   0% 2 2 0   100% 0 0   0%
netbox/models/deletion.py ConfirmCollector.collect   0% 7 7 0   0% 4 0   0%
netbox/models/deletion.py CustomCollector.collect   100% 16 0 0   93% 14 1   97%
netbox/models/deletion.py DeleteMixin.delete   83% 6 1 0   50% 2 1   75%
netbox/models/deletion.py DeleteMixin.verify_mro   0% 3 3 0   0% 2 0   0%
netbox/models/deletion.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/models/features.py ChangeLoggingMixin.__init__   100% 3 0 0   100% 0 0   100%
netbox/models/features.py ChangeLoggingMixin.serialize_object   100% 1 0 0   100% 0 0   100%
netbox/models/features.py ChangeLoggingMixin.snapshot   100% 4 0 0   50% 2 1   83%
netbox/models/features.py ChangeLoggingMixin.to_objectchange   100% 11 0 0   83% 6 1   94%
netbox/models/features.py CloningMixin.clone   0% 24 24 0   0% 20 0   0%
netbox/models/features.py CustomFieldsMixin.cf   0% 1 1 0   100% 0 0   0%
netbox/models/features.py CustomFieldsMixin.custom_fields   0% 2 2 0   100% 0 0   0%
netbox/models/features.py CustomFieldsMixin.get_custom_fields   0% 10 10 0   0% 6 0   0%
netbox/models/features.py CustomFieldsMixin.get_custom_fields_by_group   0% 10 10 0   0% 4 0   0%
netbox/models/features.py CustomFieldsMixin.clean   42% 19 11 0   17% 12 2   32%
netbox/models/features.py CustomFieldsMixin.save   60% 5 2 0   25% 4 1   44%
netbox/models/features.py CustomValidationMixin.clean   75% 4 1 0   50% 2 1   67%
netbox/models/features.py ContactsMixin.get_contacts   0% 4 4 0   100% 0 0   0%
netbox/models/features.py batch_delete_jobs   0% 5 5 0   0% 2 0   0%
netbox/models/features.py JobsMixin.delete   0% 4 4 0   100% 0 0   0%
netbox/models/features.py JobsMixin.get_latest_jobs   0% 1 1 0   100% 0 0   0%
netbox/models/features.py SyncedDataMixin.is_synced   0% 1 1 0   100% 0 0   0%
netbox/models/features.py SyncedDataMixin.clean   67% 9 3 0   50% 2 1   64%
netbox/models/features.py SyncedDataMixin.save   86% 7 1 0   50% 2 1   78%
netbox/models/features.py SyncedDataMixin.delete   100% 4 0 0   100% 0 0   100%
netbox/models/features.py SyncedDataMixin.resolve_data_file   0% 7 7 0   0% 2 0   0%
netbox/models/features.py SyncedDataMixin.validate_synced_value   0% 10 10 0   0% 4 0   0%
netbox/models/features.py SyncedDataMixin.sync   0% 4 4 0   0% 2 0   0%
netbox/models/features.py SyncedDataMixin.sync_data   0% 1 1 0   100% 0 0   0%
netbox/models/features.py model_is_public   100% 4 0 0   100% 2 0   100%
netbox/models/features.py get_model_features   100% 1 0 0   100% 0 0   100%
netbox/models/features.py has_feature   53% 15 7 0   62% 8 3   57%
netbox/models/features.py register_models   100% 19 0 0   94% 18 1   97%
netbox/models/features.py (no function)   100% 138 0 0   100% 0 0   100%
netbox/models/lookups.py Ancestor.as_sql   0% 3 3 0   100% 0 0   0%
netbox/models/lookups.py AncestorOrEqual.as_sql   100% 3 0 0   100% 0 0   100%
netbox/models/lookups.py Descendant.as_sql   0% 3 3 0   100% 0 0   0%
netbox/models/lookups.py DescendantOrEqual.as_sql   100% 3 0 0   100% 0 0   100%
netbox/models/lookups.py (no function)   100% 14 0 0   100% 0 0   100%
netbox/models/ltree.py LtreeField.db_type   100% 1 0 0   100% 0 0   100%
netbox/models/ltree.py LtreeField.get_prep_value   100% 3 0 0   100% 2 0   100%
netbox/models/ltree.py SortPathField.deconstruct   0% 2 2 0   100% 0 0   0%
netbox/models/ltree.py LtreeQuerySet.bulk_create   0% 6 6 0   0% 4 0   0%
netbox/models/ltree.py LtreeQuerySet.add_related_count   77% 30 7 0   67% 6 2   75%
netbox/models/ltree.py LtreeModelBase.__new__   100% 12 0 0   100% 4 0   100%
netbox/models/ltree.py LtreeModel.__init__   100% 3 0 0   100% 0 0   100%
netbox/models/ltree.py LtreeModel.from_db   100% 4 0 0   100% 0 0   100%
netbox/models/ltree.py LtreeModel._parent_creates_cycle   29% 7 5 0   17% 6 1   23%
netbox/models/ltree.py LtreeModel._has_sort_path   60% 5 2 0   100% 0 0   60%
netbox/models/ltree.py LtreeModel.clean   60% 5 2 0   50% 4 2   56%
netbox/models/ltree.py LtreeModel.save   61% 28 11 0   36% 14 3   52%
netbox/models/ltree.py LtreeModel.level   67% 3 1 0   50% 2 1   60%
netbox/models/ltree.py LtreeModel.get_level   0% 1 1 0   100% 0 0   0%
netbox/models/ltree.py LtreeModel._tree_order_field   100% 1 0 0   100% 0 0   100%
netbox/models/ltree.py LtreeModel.get_ancestors   83% 6 1 0   50% 2 1   75%
netbox/models/ltree.py LtreeModel.get_descendants   75% 4 1 0   50% 2 1   67%
netbox/models/ltree.py LtreeModel.get_children   0% 1 1 0   100% 0 0   0%
netbox/models/ltree.py LtreeModel.rebuild_sort_paths   0% 9 9 0   0% 2 0   0%
netbox/models/ltree.py (no function)   100% 50 0 0   100% 0 0   100%
netbox/models/mixins.py WeightMixin.abs_weight   0% 1 1 0   100% 0 0   0%
netbox/models/mixins.py WeightMixin.save   75% 4 1 0   50% 2 1   67%
netbox/models/mixins.py WeightMixin.clean   67% 3 1 0   50% 2 1   60%
netbox/models/mixins.py DistanceMixin.abs_distance   0% 1 1 0   100% 0 0   0%
netbox/models/mixins.py DistanceMixin.save   0% 6 6 0   0% 4 0   0%
netbox/models/mixins.py DistanceMixin.clean   0% 3 3 0   0% 2 0   0%
netbox/models/mixins.py (no function)   100% 30 0 0   100% 0 0   100%
netbox/monkey.py get_unique_validators   100% 11 0 0   100% 6 0   100%
netbox/monkey.py (no function)   100% 5 0 0   100% 0 0   100%
netbox/navigation/__init__.py MenuItemButton.__post_init__   100% 2 0 0   50% 2 1   75%
netbox/navigation/__init__.py MenuItemButton.url   0% 1 1 0   100% 0 0   0%
netbox/navigation/__init__.py MenuItemButton.url   0% 1 1 0   100% 0 0   0%
netbox/navigation/__init__.py MenuItem.__post_init__   100% 2 0 0   50% 2 1   75%
netbox/navigation/__init__.py MenuItem.url   0% 1 1 0   100% 0 0   0%
netbox/navigation/__init__.py MenuItem.url   0% 1 1 0   100% 0 0   0%
netbox/navigation/__init__.py Menu.name   0% 1 1 0   100% 0 0   0%
netbox/navigation/__init__.py get_model_item   100% 1 0 0   100% 0 0   100%
netbox/navigation/__init__.py get_model_buttons   100% 6 0 0   100% 4 0   100%
netbox/navigation/__init__.py (no function)   100% 34 0 0   100% 0 0   100%
netbox/navigation/menu.py get_menus   56% 9 4 0   50% 4 2   54%
netbox/navigation/menu.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/object_actions.py ObjectAction.get_url   0% 5 5 0   100% 0 0   0%
netbox/object_actions.py ObjectAction.get_url_params   0% 5 5 0   0% 2 0   0%
netbox/object_actions.py ObjectAction.get_context   0% 1 1 0   100% 0 0   0%
netbox/object_actions.py ObjectAction.render   0% 2 2 0   100% 0 0   0%
netbox/object_actions.py CloneObject.get_url   0% 3 3 0   100% 0 0   0%
netbox/object_actions.py BulkExport.get_context   0% 5 5 0   100% 0 0   0%
netbox/object_actions.py BulkEdit.get_context   0% 7 7 0   0% 6 0   0%
netbox/object_actions.py (no function)   100% 80 0 0   100% 0 0   100%
netbox/plugins/__init__.py PluginConfig.get_jinja_context   0% 1 1 0   100% 0 0   0%
netbox/plugins/__init__.py PluginConfig._load_resource   0% 11 11 0   0% 4 0   0%
netbox/plugins/__init__.py PluginConfig.ready   0% 33 33 0   0% 22 0   0%
netbox/plugins/__init__.py PluginConfig.validate   0% 15 15 0   0% 16 0   0%
netbox/plugins/__init__.py _load_plugin_graphql_schemas   29% 7 5 0   17% 6 1   23%
netbox/plugins/__init__.py (no function)   100% 50 0 0   100% 0 0   100%
netbox/plugins/navigation.py PluginMenu.__init__   0% 4 4 0   0% 2 0   0%
netbox/plugins/navigation.py PluginMenu.name   0% 1 1 0   100% 0 0   0%
netbox/plugins/navigation.py PluginMenuItem.__init__   0% 16 16 0   0% 10 0   0%
netbox/plugins/navigation.py PluginMenuItem.url   0% 1 1 0   100% 0 0   0%
netbox/plugins/navigation.py PluginMenuItem.url   0% 1 1 0   100% 0 0   0%
netbox/plugins/navigation.py PluginMenuButton.__init__   0% 14 14 0   0% 10 0   0%
netbox/plugins/navigation.py PluginMenuButton.url   0% 1 1 0   100% 0 0   0%
netbox/plugins/navigation.py PluginMenuButton.url   0% 1 1 0   100% 0 0   0%
netbox/plugins/navigation.py (no function)   100% 26 0 0   100% 0 0   100%
netbox/plugins/registration.py register_jinja_filters   0% 8 8 0   0% 8 0   0%
netbox/plugins/registration.py register_template_extensions   0% 10 10 0   0% 10 0   0%
netbox/plugins/registration.py register_menu   0% 3 3 0   0% 2 0   0%
netbox/plugins/registration.py register_menu_items   0% 7 7 0   0% 8 0   0%
netbox/plugins/registration.py register_graphql_schema   0% 1 1 0   100% 0 0   0%
netbox/plugins/registration.py _register_graphql_extensions   0% 46 46 0   0% 30 0   0%
netbox/plugins/registration.py register_graphql_type_extensions   0% 1 1 0   100% 0 0   0%
netbox/plugins/registration.py register_graphql_filter_extensions   0% 1 1 0   100% 0 0   0%
netbox/plugins/registration.py register_user_preferences   0% 1 1 0   100% 0 0   0%
netbox/plugins/registration.py register_serializer_resolver   0% 5 5 0   0% 4 0   0%
netbox/plugins/registration.py (no function)   100% 21 0 0   100% 0 0   100%
netbox/plugins/templates.py PluginTemplateExtension.__init__   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.render   0% 5 5 0   0% 4 0   0%
netbox/plugins/templates.py PluginTemplateExtension.head   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.navbar   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.list_buttons   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.buttons   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.alerts   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.left_page   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.right_page   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py PluginTemplateExtension.full_width_page   0% 1 1 0   100% 0 0   0%
netbox/plugins/templates.py (no function)   100% 15 0 0   100% 0 0   100%
netbox/plugins/urls.py (no function)   50% 20 10 0   17% 6 1   42%
netbox/plugins/utils.py get_installed_plugins   38% 8 5 0   25% 4 1   33%
netbox/plugins/utils.py get_plugin_config   0% 5 5 0   100% 0 0   0%
netbox/plugins/utils.py (no function)   100% 7 0 0   100% 0 0   100%
netbox/plugins/views.py InstalledPluginsAPIView.get_view_name   0% 1 1 0   100% 0 0   0%
netbox/plugins/views.py InstalledPluginsAPIView._get_plugin_data   0% 1 1 0   100% 0 0   0%
netbox/plugins/views.py InstalledPluginsAPIView.get   0% 1 1 0   100% 0 0   0%
netbox/plugins/views.py PluginsAPIRootView.get_view_name   0% 1 1 0   100% 0 0   0%
netbox/plugins/views.py PluginsAPIRootView._get_plugin_entry   0% 6 6 0   100% 0 0   0%
netbox/plugins/views.py PluginsAPIRootView.get   0% 7 7 0   0% 4 0   0%
netbox/plugins/views.py (no function)   100% 26 0 0   100% 0 0   100%
netbox/preferences.py get_page_lengths   100% 1 0 0   100% 0 0   100%
netbox/preferences.py get_csv_delimiters   100% 7 0 0   100% 4 0   100%
netbox/preferences.py (no function)   69% 16 5 0   17% 6 1   55%
netbox/registry.py Registry.__getitem__   50% 4 2 0   100% 0 0   50%
netbox/registry.py Registry.__setitem__   0% 1 1 0   100% 0 0   0%
netbox/registry.py Registry.__delitem__   0% 1 1 0   100% 0 0   0%
netbox/registry.py (no function)   100% 7 0 0   100% 0 0   100%
netbox/scaffold.py _bundled_data_dir   0% 1 1 0   100% 0 0   0%
netbox/scaffold.py _config_template   0% 1 1 0   100% 0 0   0%
netbox/scaffold.py _contrib_dir   0% 1 1 0   100% 0 0   0%
netbox/scaffold.py _write   0% 7 7 0   0% 2 0   0%
netbox/scaffold.py scaffold_instance   0% 4 4 0   100% 0 0   0%
netbox/scaffold.py main   0% 10 10 0   0% 4 0   0%
netbox/scaffold.py (no function)   0% 10 10 0   100% 0 0   0%
netbox/search/__init__.py SearchIndex.get_field_type   90% 10 1 0   88% 8 1   89%
netbox/search/__init__.py SearchIndex.get_attr_type   0% 12 12 0   0% 10 0   0%
netbox/search/__init__.py SearchIndex.get_field_value   100% 3 0 0   100% 2 0   100%
netbox/search/__init__.py SearchIndex.get_category   0% 1 1 0   100% 0 0   0%
netbox/search/__init__.py SearchIndex.to_cache   47% 19 10 0   42% 12 1   45%
netbox/search/__init__.py get_indexer   100% 2 0 0   100% 0 0   100%
netbox/search/__init__.py register_search   100% 4 0 0   100% 0 0   100%
netbox/search/__init__.py (no function)   100% 37 0 0   100% 0 0   100%
netbox/search/backends.py SearchBackend.get_object_types   0% 7 7 0   0% 4 0   0%
netbox/search/backends.py SearchBackend.search   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.caching_handler   0% 5 5 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.removal_handler   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.cache   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.remove   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.clear   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.count   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py SearchBackend.size   0% 1 1 0   100% 0 0   0%
netbox/search/backends.py CachedValueSearchBackend.caching_handler   73% 11 3 0   100% 0 0   73%
netbox/search/backends.py CachedValueSearchBackend.removal_handler   73% 11 3 0   100% 0 0   73%
netbox/search/backends.py CachedValueSearchBackend.search   0% 40 40 0   0% 24 0   0%
netbox/search/backends.py CachedValueSearchBackend.cache   76% 25 6 0   75% 16 4   76%
netbox/search/backends.py CachedValueSearchBackend._remove_by_id   75% 4 1 0   50% 2 1   67%
netbox/search/backends.py CachedValueSearchBackend.remove   0% 6 6 0   100% 0 0   0%
netbox/search/backends.py CachedValueSearchBackend._is_missing_cache_table   0% 2 2 0   100% 0 0   0%
netbox/search/backends.py CachedValueSearchBackend._is_stale_index_target   0% 2 2 0   100% 0 0   0%
netbox/search/backends.py CachedValueSearchBackend._apply_deferred_updates   54% 35 16 0   42% 12 1   51%
netbox/search/backends.py CachedValueSearchBackend.clear   0% 4 4 0   0% 2 0   0%
netbox/search/backends.py CachedValueSearchBackend.count   100% 4 0 0   50% 2 1   83%
netbox/search/backends.py CachedValueSearchBackend.size   100% 1 0 0   100% 0 0   100%
netbox/search/backends.py get_backend   60% 5 2 0   100% 0 0   60%
netbox/search/backends.py (no function)   100% 52 0 0   100% 0 0   100%
netbox/search/deferred.py mark_for_deferred_indexing   86% 22 3 0   75% 8 2   83%
netbox/search/deferred.py mark_for_deferred_indexing.flush   100% 1 0 0   100% 0 0   100%
netbox/search/deferred.py _pending_batch   100% 4 0 0   100% 4 0   100%
netbox/search/deferred.py _flush   64% 14 5 0   67% 6 2   65%
netbox/search/deferred.py (no function)   100% 16 0 0   100% 0 0   100%
netbox/search/jobs.py SearchCacheJob.run   0% 1 1 0   100% 0 0   0%
netbox/search/jobs.py (no function)   100% 8 0 0   100% 0 0   100%
netbox/search/signals.py caching_handler   100% 1 0 0   100% 0 0   100%
netbox/search/signals.py removal_handler   100% 1 0 0   100% 0 0   100%
netbox/search/signals.py (no function)   100% 7 0 0   100% 0 0   100%
netbox/search/utils.py get_indexer   0% 2 2 0   100% 0 0   0%
netbox/search/utils.py (no function)   100% 4 0 0   100% 0 0   100%
netbox/settings.py _setting   0% 3 3 0   0% 2 0   0%
netbox/settings.py (no function)   71% 403 116 0   42% 130 42   64%
netbox/settings_utils.py resolve_install_paths   62% 13 5 0   50% 2 1   60%
netbox/settings_utils.py secret_key_hint   0% 3 3 0   0% 2 0   0%
netbox/settings_utils.py parse_job_timeout   56% 9 4 0   50% 4 2   54%
netbox/settings_utils.py validate_webhook_default_timeout   50% 4 2 0   50% 4 2   50%
netbox/settings_utils.py _import_module   33% 6 4 0   0% 2 0   25%
netbox/settings_utils.py _import_from_path   0% 24 24 0   0% 10 0   0%
netbox/settings_utils.py get_configuration_dir   100% 2 0 0   100% 0 0   100%
netbox/settings_utils.py load_configuration   25% 16 12 0   20% 10 2   23%
netbox/settings_utils.py load_ldap_config   0% 14 14 0   0% 8 0   0%
netbox/settings_utils.py (no function)   100% 23 0 0   100% 0 0   100%
netbox/signals.py (no function)   100% 2 0 0   100% 0 0   100%
netbox/tables/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
netbox/tables/columns.py DateColumn.render   0% 3 3 0   0% 2 0   0%
netbox/tables/columns.py DateColumn.value   0% 3 3 0   0% 2 0   0%
netbox/tables/columns.py DateColumn.from_field   100% 3 0 0   100% 2 0   100%
netbox/tables/columns.py DateTimeColumn.__init__   100% 2 0 0   100% 0 0   100%
netbox/tables/columns.py DateTimeColumn.render   0% 5 5 0   0% 2 0   0%
netbox/tables/columns.py DateTimeColumn.value   0% 3 3 0   0% 2 0   0%
netbox/tables/columns.py DateTimeColumn.from_field   100% 3 0 0   100% 2 0   100%
netbox/tables/columns.py DurationColumn.render   0% 8 8 0   0% 6 0   0%
netbox/tables/columns.py DurationColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ManyToManyColumn.value   0% 2 2 0   100% 0 0   0%
netbox/tables/columns.py TemplateColumn.__init__   100% 2 0 0   100% 0 0   100%
netbox/tables/columns.py TemplateColumn.render   0% 4 4 0   0% 2 0   0%
netbox/tables/columns.py TemplateColumn.value   0% 6 6 0   0% 4 0   0%
netbox/tables/columns.py ToggleColumn.__init__   100% 5 0 0   50% 2 1   86%
netbox/tables/columns.py ToggleColumn.header   0% 2 2 0   100% 0 0   0%
netbox/tables/columns.py BooleanColumn.__init__   100% 3 0 0   100% 0 0   100%
netbox/tables/columns.py BooleanColumn.render   0% 7 7 0   0% 6 0   0%
netbox/tables/columns.py BooleanColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ActionsColumn.__init__   100% 4 0 0   100% 0 0   100%
netbox/tables/columns.py ActionsColumn.header   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ActionsColumn.render   0% 35 35 0   0% 20 0   0%
netbox/tables/columns.py ChoiceFieldColumn.__init__   100% 2 0 0   100% 0 0   100%
netbox/tables/columns.py ChoiceFieldColumn.render   0% 9 9 0   0% 4 0   0%
netbox/tables/columns.py ChoiceFieldColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ContentTypeColumn.render   0% 3 3 0   0% 2 0   0%
netbox/tables/columns.py ContentTypeColumn.value   0% 3 3 0   0% 2 0   0%
netbox/tables/columns.py ContentTypesColumn.__init__   100% 3 0 0   50% 2 1   80%
netbox/tables/columns.py ContentTypesColumn.transform   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ContentTypesColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ColorColumn.render   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ColorColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ColoredLabelColumn.__init__   100% 1 0 0   100% 0 0   100%
netbox/tables/columns.py ColoredLabelColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py LinkedCountColumn.__init__   100% 4 0 0   100% 0 0   100%
netbox/tables/columns.py LinkedCountColumn.render   0% 6 6 0   0% 4 0   0%
netbox/tables/columns.py LinkedCountColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py TagColumn.__init__   100% 1 0 0   100% 0 0   100%
netbox/tables/columns.py TagColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py CustomFieldColumn.__init__   0% 8 8 0   0% 4 0   0%
netbox/tables/columns.py CustomFieldColumn.unset_alias   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py CustomFieldColumn.get_ordering_annotation   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py CustomFieldColumn.order   0% 8 8 0   100% 0 0   0%
netbox/tables/columns.py CustomFieldColumn._linkify_item   0% 3 3 0   0% 2 0   0%
netbox/tables/columns.py CustomFieldColumn.render   0% 43 43 0   0% 34 0   0%
netbox/tables/columns.py CustomFieldColumn.value   0% 5 5 0   0% 4 0   0%
netbox/tables/columns.py CustomLinkColumn.__init__   0% 5 5 0   100% 0 0   0%
netbox/tables/columns.py CustomLinkColumn._render_customlink   0% 4 4 0   0% 2 0   0%
netbox/tables/columns.py CustomLinkColumn.render   0% 7 7 0   0% 2 0   0%
netbox/tables/columns.py CustomLinkColumn.value   0% 6 6 0   0% 2 0   0%
netbox/tables/columns.py TreeColumn.__init__   100% 1 0 0   100% 0 0   100%
netbox/tables/columns.py TreeColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py UtilizationColumn.__init__   100% 1 0 0   100% 0 0   100%
netbox/tables/columns.py UtilizationColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py MarkdownColumn.__init__   100% 1 0 0   100% 0 0   100%
netbox/tables/columns.py MarkdownColumn.value   0% 1 1 0   100% 0 0   0%
netbox/tables/columns.py ArrayColumn.__init__   100% 3 0 0   100% 0 0   100%
netbox/tables/columns.py ArrayColumn.render   0% 9 9 0   0% 6 0   0%
netbox/tables/columns.py ChoicesColumn.__init__   100% 2 0 0   100% 0 0   100%
netbox/tables/columns.py ChoicesColumn.render   0% 8 8 0   0% 4 0   0%
netbox/tables/columns.py DistanceColumn.__init__   100% 1 0 0   100% 0 0   100%
netbox/tables/columns.py DictColumn.render   0% 2 2 0   100% 0 0   0%
netbox/tables/columns.py (no function)   100% 137 0 0   100% 0 0   100%
netbox/tables/tables.py BaseTable.__init__   0% 3 3 0   0% 2 0   0%
netbox/tables/tables.py BaseTable._get_columns   0% 5 5 0   0% 4 0   0%
netbox/tables/tables.py BaseTable.name   0% 1 1 0   100% 0 0   0%
netbox/tables/tables.py BaseTable.available_columns   0% 1 1 0   100% 0 0   0%
netbox/tables/tables.py BaseTable.selected_columns   0% 1 1 0   100% 0 0   0%
netbox/tables/tables.py BaseTable.objects_count   0% 3 3 0   0% 2 0   0%
netbox/tables/tables.py BaseTable._set_columns   0% 10 10 0   0% 8 0   0%
netbox/tables/tables.py BaseTable._apply_prefetching   0% 28 28 0   0% 20 0   0%
netbox/tables/tables.py BaseTable._get_custom_field_ordering_columns   0% 9 9 0   0% 6 0   0%
netbox/tables/tables.py BaseTable._apply_ordering_annotations   0% 5 5 0   0% 4 0   0%
netbox/tables/tables.py BaseTable._apply_ordering_tie_breaker   0% 3 3 0   0% 2 0   0%
netbox/tables/tables.py BaseTable.order_by   0% 8 8 0   0% 6 0   0%
netbox/tables/tables.py BaseTable.configure   0% 33 33 0   0% 30 0   0%
netbox/tables/tables.py BaseTable.configuration   0% 4 4 0   0% 2 0   0%
netbox/tables/tables.py BaseTable.config_params   0% 3 3 0   0% 2 0   0%
netbox/tables/tables.py NetBoxTable.__init__   0% 10 10 0   0% 4 0   0%
netbox/tables/tables.py NetBoxTable.configure   0% 2 2 0   100% 0 0   0%
netbox/tables/tables.py NetBoxTable._restrict_customlink_columns   0% 7 7 0   0% 4 0   0%
netbox/tables/tables.py NetBoxTable.htmx_url   0% 6 6 0   0% 2 0   0%
netbox/tables/tables.py SearchTable.__init__   0% 2 2 0   100% 0 0   0%
netbox/tables/tables.py SearchTable.render_field   0% 5 5 0   100% 0 0   0%
netbox/tables/tables.py SearchTable.render_value   0% 4 4 0   0% 2 0   0%
netbox/tables/tables.py (no function)   100% 92 0 0   100% 0 0   100%
netbox/tables/template_code.py (no function)   100% 1 0 0   100% 0 0   100%
netbox/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
netbox/ui/actions.py PanelAction.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/actions.py PanelAction.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/actions.py PanelAction.render   0% 4 4 0   0% 2 0   0%
netbox/ui/actions.py LinkAction.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/actions.py LinkAction.get_url   0% 12 12 0   0% 10 0   0%
netbox/ui/actions.py LinkAction.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/actions.py AddObject.__init__   70% 10 3 0   50% 2 1   67%
netbox/ui/actions.py CopyContent.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/actions.py CopyContent.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/actions.py (no function)   100% 24 0 0   100% 0 0   100%
netbox/ui/attrs.py MapURLMixin.map_url   0% 5 5 0   0% 4 0   0%
netbox/ui/attrs.py ObjectAttribute.__init__   100% 3 0 0   100% 2 0   100%
netbox/ui/attrs.py ObjectAttribute.get_value   0% 1 1 0   100% 0 0   0%
netbox/ui/attrs.py ObjectAttribute.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/attrs.py ObjectAttribute.render   0% 5 5 0   0% 2 0   0%
netbox/ui/attrs.py TextAttr.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/attrs.py TextAttr.get_value   0% 4 4 0   0% 2 0   0%
netbox/ui/attrs.py TextAttr.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/attrs.py ArrayAttr.get_value   0% 6 6 0   0% 4 0   0%
netbox/ui/attrs.py NumericAttr.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/attrs.py NumericAttr.get_context   0% 2 2 0   100% 0 0   0%
netbox/ui/attrs.py ChoiceAttr._resolve_target   0% 4 4 0   0% 2 0   0%
netbox/ui/attrs.py ChoiceAttr.get_value   0% 7 7 0   0% 4 0   0%
netbox/ui/attrs.py ChoiceAttr.get_context   0% 6 6 0   0% 2 0   0%
netbox/ui/attrs.py BooleanAttr.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/attrs.py BooleanAttr.get_value   0% 4 4 0   0% 2 0   0%
netbox/ui/attrs.py ImageAttr.__init__   86% 7 1 0   50% 4 2   73%
netbox/ui/attrs.py ImageAttr.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/attrs.py RelatedObjectAttr.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/attrs.py RelatedObjectAttr.get_context   0% 2 2 0   100% 0 0   0%
netbox/ui/attrs.py RelatedObjectListAttr.__init__   80% 5 1 0   50% 2 1   71%
netbox/ui/attrs.py RelatedObjectListAttr._get_items   0% 9 9 0   0% 6 0   0%
netbox/ui/attrs.py RelatedObjectListAttr.get_context   0% 2 2 0   100% 0 0   0%
netbox/ui/attrs.py RelatedObjectListAttr.render   0% 6 6 0   0% 2 0   0%
netbox/ui/attrs.py NestedObjectAttr.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/attrs.py NestedObjectAttr.get_context   0% 6 6 0   0% 4 0   0%
netbox/ui/attrs.py GenericForeignKeyAttr.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/attrs.py GenericForeignKeyAttr._get_nodes   0% 9 9 0   0% 6 0   0%
netbox/ui/attrs.py GenericForeignKeyAttr.get_context   0% 3 3 0   100% 0 0   0%
netbox/ui/attrs.py AddressAttr.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/attrs.py AddressAttr.get_context   0% 4 4 0   0% 2 0   0%
netbox/ui/attrs.py GPSCoordinatesAttr.__init__   100% 4 0 0   100% 0 0   100%
netbox/ui/attrs.py GPSCoordinatesAttr.render   0% 8 8 0   0% 4 0   0%
netbox/ui/attrs.py DateTimeAttr.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/attrs.py DateTimeAttr.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/attrs.py DurationAttr.get_value   0% 2 2 0   100% 0 0   0%
netbox/ui/attrs.py TemplatedAttr.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/attrs.py TemplatedAttr.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/attrs.py compute_weight_display   0% 8 8 0   0% 6 0   0%
netbox/ui/attrs.py compute_diameter_display   0% 5 5 0   0% 4 0   0%
netbox/ui/attrs.py compute_flow_rate_display   0% 5 5 0   0% 4 0   0%
netbox/ui/attrs.py compute_distance_display   0% 11 11 0   0% 8 0   0%
netbox/ui/attrs.py WeightAttr.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/attrs.py WeightAttr.render   0% 8 8 0   0% 2 0   0%
netbox/ui/attrs.py DistanceAttr.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/attrs.py DistanceAttr.render   0% 8 8 0   0% 2 0   0%
netbox/ui/attrs.py DiameterAttr.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/attrs.py DiameterAttr.render   0% 8 8 0   0% 2 0   0%
netbox/ui/attrs.py FlowRateAttr.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/attrs.py FlowRateAttr.render   0% 8 8 0   0% 2 0   0%
netbox/ui/attrs.py (no function)   100% 119 0 0   100% 0 0   100%
netbox/ui/breadcrumbs.py filtered_list_url   100% 1 0 0   100% 0 0   100%
netbox/ui/breadcrumbs.py object_view_url   100% 1 0 0   100% 0 0   100%
netbox/ui/breadcrumbs.py get_root_breadcrumb   0% 8 8 0   100% 0 0   0%
netbox/ui/breadcrumbs.py Breadcrumb.__init__   80% 5 1 0   50% 2 1   71%
netbox/ui/breadcrumbs.py Breadcrumb.resolve   0% 3 3 0   0% 2 0   0%
netbox/ui/breadcrumbs.py Breadcrumb.get_label   0% 5 5 0   0% 4 0   0%
netbox/ui/breadcrumbs.py Breadcrumb.get_url   0% 5 5 0   0% 4 0   0%
netbox/ui/breadcrumbs.py Breadcrumb.render   0% 13 13 0   0% 8 0   0%
netbox/ui/breadcrumbs.py Breadcrumb._is_iterable   0% 3 3 0   0% 2 0   0%
netbox/ui/breadcrumbs.py (no function)   100% 16 0 0   100% 0 0   100%
netbox/ui/layout.py Layout.__init__   80% 10 2 0   75% 8 2   78%
netbox/ui/layout.py Layout.__iter__   0% 1 1 0   100% 0 0   0%
netbox/ui/layout.py Layout.__repr__   0% 1 1 0   100% 0 0   0%
netbox/ui/layout.py Row.__init__   75% 4 1 0   75% 4 1   75%
netbox/ui/layout.py Row.__iter__   0% 1 1 0   100% 0 0   0%
netbox/ui/layout.py Row.__repr__   0% 1 1 0   100% 0 0   0%
netbox/ui/layout.py Column.__init__   50% 10 5 0   40% 10 2   45%
netbox/ui/layout.py Column.__iter__   0% 1 1 0   100% 0 0   0%
netbox/ui/layout.py Column.__repr__   0% 1 1 0   100% 0 0   0%
netbox/ui/layout.py SimpleLayout.__init__   100% 5 0 0   100% 0 0   100%
netbox/ui/layout.py (no function)   100% 17 0 0   100% 0 0   100%
netbox/ui/panels.py Panel.__init__   100% 5 0 0   100% 4 0   100%
netbox/ui/panels.py Panel.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/panels.py Panel.should_render   0% 1 1 0   100% 0 0   0%
netbox/ui/panels.py Panel.render   0% 4 4 0   0% 2 0   0%
netbox/ui/panels.py ObjectPanel.__init__   100% 3 0 0   100% 2 0   100%
netbox/ui/panels.py ObjectPanel.get_context   0% 7 7 0   0% 4 0   0%
netbox/ui/panels.py ObjectAttributesPanelMeta.__new__   100% 14 0 0   92% 12 1   96%
netbox/ui/panels.py ObjectAttributesPanel.__init__   80% 5 1 0   50% 2 1   71%
netbox/ui/panels.py ObjectAttributesPanel._name_to_label   0% 3 3 0   100% 0 0   0%
netbox/ui/panels.py ObjectAttributesPanel.get_context   0% 7 7 0   0% 4 0   0%
netbox/ui/panels.py CommentsPanel.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/panels.py CommentsPanel.get_context   0% 2 2 0   100% 0 0   0%
netbox/ui/panels.py JSONPanel.__init__   100% 4 0 0   50% 2 1   83%
netbox/ui/panels.py JSONPanel.get_context   0% 2 2 0   100% 0 0   0%
netbox/ui/panels.py RelatedObjectsPanel.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/panels.py ObjectsTablePanel.__init__   86% 7 1 0   50% 2 1   78%
netbox/ui/panels.py ObjectsTablePanel.model   0% 4 4 0   100% 0 0   0%
netbox/ui/panels.py ObjectsTablePanel.get_context   0% 10 10 0   0% 6 0   0%
netbox/ui/panels.py ObjectsTablePanel.should_render   0% 4 4 0   0% 2 0   0%
netbox/ui/panels.py TemplatePanel.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/panels.py TemplatePanel.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/panels.py TextCodePanel.__init__   100% 3 0 0   100% 0 0   100%
netbox/ui/panels.py TextCodePanel.get_context   0% 2 2 0   100% 0 0   0%
netbox/ui/panels.py PluginContentPanel.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/panels.py PluginContentPanel.render   0% 2 2 0   100% 0 0   0%
netbox/ui/panels.py ContextTablePanel.__init__   100% 2 0 0   100% 0 0   100%
netbox/ui/panels.py ContextTablePanel._resolve_table   0% 3 3 0   0% 2 0   0%
netbox/ui/panels.py ContextTablePanel.get_context   0% 1 1 0   100% 0 0   0%
netbox/ui/panels.py ContextTablePanel.should_render   0% 1 1 0   100% 0 0   0%
netbox/ui/panels.py (no function)   100% 76 0 0   100% 0 0   100%
netbox/ui/utils.py is_coordinate_map_url   0% 1 1 0   100% 0 0   0%
netbox/ui/utils.py build_coords_url   0% 5 5 0   0% 2 0   0%
netbox/ui/utils.py (no function)   100% 3 0 0   100% 0 0   100%
netbox/urls.py (no function)   85% 20 3 0   50% 4 2   79%
netbox/utils.py get_data_backend_choices   100% 1 0 0   100% 0 0   100%
netbox/utils.py register_data_backend   100% 2 0 0   100% 0 0   100%
netbox/utils.py register_data_backend._wrapper   100% 2 0 0   100% 0 0   100%
netbox/utils.py register_model_feature   67% 6 2 0   50% 4 2   60%
netbox/utils.py register_model_feature.decorator   100% 2 0 0   100% 0 0   100%
netbox/utils.py register_request_processor   100% 2 0 0   100% 0 0   100%
netbox/utils.py (no function)   100% 7 0 0   100% 0 0   100%
netbox/views/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
netbox/views/errors.py StaticMediaFailureView.get   0% 1 1 0   100% 0 0   0%
netbox/views/errors.py handler_404   50% 4 2 0   50% 2 1   50%
netbox/views/errors.py handler_500   67% 6 2 0   100% 0 0   67%
netbox/views/errors.py (no function)   100% 17 0 0   100% 0 0   100%
netbox/views/generic/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
netbox/views/generic/base.py BaseObjectView.dispatch   0% 2 2 0   100% 0 0   0%
netbox/views/generic/base.py BaseObjectView.get_queryset   0% 3 3 0   0% 2 0   0%
netbox/views/generic/base.py BaseObjectView.get_object   0% 1 1 0   100% 0 0   0%
netbox/views/generic/base.py BaseObjectView.get_extra_context   0% 1 1 0   100% 0 0   0%
netbox/views/generic/base.py BaseMultiObjectView.dispatch   0% 2 2 0   100% 0 0   0%
netbox/views/generic/base.py BaseMultiObjectView.get_queryset   0% 3 3 0   0% 2 0   0%
netbox/views/generic/base.py BaseMultiObjectView.get_extra_context   0% 1 1 0   100% 0 0   0%
netbox/views/generic/base.py (no function)   100% 19 0 0   100% 0 0   100%
netbox/views/generic/bulk_views.py _delay_mptt_updates   0% 5 5 0   0% 2 0   0%
netbox/views/generic/bulk_views.py _rebuild_mptt_tree   0% 3 3 0   0% 2 0   0%
netbox/views/generic/bulk_views.py ObjectListView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py ObjectListView.export_yaml   0% 2 2 0   100% 0 0   0%
netbox/views/generic/bulk_views.py ObjectListView.export_table   0% 10 10 0   0% 4 0   0%
netbox/views/generic/bulk_views.py ObjectListView.export_template   0% 10 10 0   0% 2 0   0%
netbox/views/generic/bulk_views.py ObjectListView.get_queryset   0% 2 2 0   100% 0 0   0%
netbox/views/generic/bulk_views.py ObjectListView.get   0% 32 32 0   0% 16 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.get_pattern_context   0% 3 3 0   0% 2 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.render_pattern_template   0% 4 4 0   0% 2 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.apply_pattern_template_fields   0% 7 7 0   0% 6 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.get_model_form_data   0% 3 3 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.add_model_form_errors   0% 12 12 0   0% 12 0   0%
netbox/views/generic/bulk_views.py BulkCreateView._create_objects   0% 10 10 0   0% 4 0   0%
netbox/views/generic/bulk_views.py BulkCreateView._get_context   0% 2 2 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.get   0% 9 9 0   0% 6 0   0%
netbox/views/generic/bulk_views.py BulkCreateView.post   0% 27 27 0   0% 8 0   0%
netbox/views/generic/bulk_views.py BulkImportView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkImportView.prep_related_object_data   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkImportView._get_form_fields   0% 10 10 0   0% 6 0   0%
netbox/views/generic/bulk_views.py BulkImportView._compile_form_errors   0% 8 8 0   0% 6 0   0%
netbox/views/generic/bulk_views.py BulkImportView._save_object   0% 25 25 0   0% 18 0   0%
netbox/views/generic/bulk_views.py BulkImportView.save_object   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkImportView._process_import_records   0% 32 32 0   0% 20 0   0%
netbox/views/generic/bulk_views.py BulkImportView.create_and_update_objects   0% 23 23 0   0% 10 0   0%
netbox/views/generic/bulk_views.py BulkImportView.get   0% 5 5 0   0% 2 0   0%
netbox/views/generic/bulk_views.py BulkImportView.post   0% 35 35 0   0% 16 0   0%
netbox/views/generic/bulk_views.py BulkEditView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkEditView.pre_save_operations   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkEditView.post_save_operations   0% 4 4 0   0% 4 0   0%
netbox/views/generic/bulk_views.py BulkEditView._update_objects   0% 55 55 0   0% 40 0   0%
netbox/views/generic/bulk_views.py BulkEditView.get   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkEditView.post   0% 56 56 0   0% 30 0   0%
netbox/views/generic/bulk_views.py BulkRenameView.__init__   0% 3 3 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkRenameView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkRenameView._rename_objects   0% 22 22 0   0% 10 0   0%
netbox/views/generic/bulk_views.py BulkRenameView.post   0% 38 38 0   0% 20 0   0%
netbox/views/generic/bulk_views.py BulkDeleteView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkDeleteView.get   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkDeleteView.post   0% 55 55 0   0% 26 0   0%
netbox/views/generic/bulk_views.py BulkComponentCreateView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/bulk_views.py BulkComponentCreateView.post   0% 74 74 0   0% 40 0   0%
netbox/views/generic/bulk_views.py (no function)   100% 126 0 0   100% 0 0   100%
netbox/views/generic/feature_views.py ObjectChangeLogView.get   0% 8 8 0   0% 2 0   0%
netbox/views/generic/feature_views.py ObjectImageAttachmentsView.get   0% 3 3 0   100% 0 0   0%
netbox/views/generic/feature_views.py ObjectJournalView.get   0% 13 13 0   0% 4 0   0%
netbox/views/generic/feature_views.py ObjectJobsView.get_object   0% 1 1 0   100% 0 0   0%
netbox/views/generic/feature_views.py ObjectJobsView.get_jobs   0% 2 2 0   100% 0 0   0%
netbox/views/generic/feature_views.py ObjectJobsView.get   0% 6 6 0   100% 0 0   0%
netbox/views/generic/feature_views.py ObjectSyncDataView.post   0% 10 10 0   0% 4 0   0%
netbox/views/generic/feature_views.py BulkSyncDataView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/feature_views.py BulkSyncDataView.post   0% 6 6 0   0% 2 0   0%
netbox/views/generic/feature_views.py ObjectContactsView.dispatch   0% 3 3 0   100% 0 0   0%
netbox/views/generic/feature_views.py ObjectContactsView.get_children   0% 1 1 0   100% 0 0   0%
netbox/views/generic/feature_views.py (no function)   100% 54 0 0   100% 0 0   100%
netbox/views/generic/mixins.py ActionsMixin.get_permitted_actions   0% 7 7 0   0% 4 0   0%
netbox/views/generic/mixins.py TableMixin.get_table   0% 11 11 0   0% 6 0   0%
netbox/views/generic/mixins.py (no function)   100% 9 0 0   100% 0 0   100%
netbox/views/generic/object_views.py ObjectView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectView.get_template_name   0% 4 4 0   0% 2 0   0%
netbox/views/generic/object_views.py ObjectView.get   0% 3 3 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectChildrenView.get_children   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectChildrenView.prep_table_data   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectChildrenView.get   0% 12 12 0   0% 4 0   0%
netbox/views/generic/object_views.py ObjectEditView.dispatch   0% 2 2 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectEditView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectEditView.get_object   0% 3 3 0   0% 2 0   0%
netbox/views/generic/object_views.py ObjectEditView.alter_object   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectEditView.get_extra_addanother_params   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectEditView.get   0% 13 13 0   0% 4 0   0%
netbox/views/generic/object_views.py ObjectEditView.post   0% 50 50 0   0% 22 0   0%
netbox/views/generic/object_views.py ObjectDeleteView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ObjectDeleteView._get_dependent_objects   0% 14 14 0   0% 8 0   0%
netbox/views/generic/object_views.py ObjectDeleteView._handle_protected_objects   0% 4 4 0   0% 2 0   0%
netbox/views/generic/object_views.py ObjectDeleteView.get   0% 12 12 0   0% 2 0   0%
netbox/views/generic/object_views.py ObjectDeleteView.post   0% 30 30 0   0% 6 0   0%
netbox/views/generic/object_views.py ComponentCreateView.get_required_permission   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ComponentCreateView.alter_object   0% 1 1 0   100% 0 0   0%
netbox/views/generic/object_views.py ComponentCreateView.initialize_form   0% 4 4 0   100% 0 0   0%
netbox/views/generic/object_views.py ComponentCreateView.get   0% 5 5 0   0% 2 0   0%
netbox/views/generic/object_views.py ComponentCreateView.post   0% 52 52 0   0% 34 0   0%
netbox/views/generic/object_views.py (no function)   100% 73 0 0   100% 0 0   100%
netbox/views/generic/utils.py get_prerequisite_model   0% 6 6 0   0% 6 0   0%
netbox/views/generic/utils.py (no function)   100% 2 0 0   100% 0 0   100%
netbox/views/htmx.py ObjectSelectorView.get   0% 10 10 0   0% 4 0   0%
netbox/views/htmx.py ObjectSelectorView._get_model   0% 6 6 0   100% 0 0   0%
netbox/views/htmx.py ObjectSelectorView._get_form_class   0% 5 5 0   0% 2 0   0%
netbox/views/htmx.py ObjectSelectorView._get_filterset_class   0% 5 5 0   0% 2 0   0%
netbox/views/htmx.py (no function)   100% 13 0 0   100% 0 0   100%
netbox/views/misc.py HomeView.get   0% 20 20 0   0% 8 0   0%
netbox/views/misc.py SearchView.get   0% 22 22 0   0% 10 0   0%
netbox/views/misc.py MediaView.get   0% 11 11 0   0% 8 0   0%
netbox/views/misc.py (no function)   100% 37 0 0   100% 0 0   100%
netbox/wsgi.py (no function)   100% 4 0 0   100% 0 0   100%
reports/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
scripts/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tenancy/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tenancy/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tenancy/api/serializers.py (no function)   100% 2 0 0   100% 0 0   100%
tenancy/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tenancy/api/serializers_/contacts.py (no function)   100% 37 0 0   100% 0 0   100%
tenancy/api/serializers_/nested.py (no function)   100% 19 0 0   100% 0 0   100%
tenancy/api/serializers_/tenants.py (no function)   100% 29 0 0   100% 0 0   100%
tenancy/api/urls.py (no function)   100% 12 0 0   100% 0 0   100%
tenancy/api/views.py TenancyRootView.get_view_name   0% 1 1 0   100% 0 0   0%
tenancy/api/views.py (no function)   100% 31 0 0   100% 0 0   100%
tenancy/apps.py TenancyConfig.ready   100% 3 0 0   100% 0 0   100%
tenancy/apps.py (no function)   100% 4 0 0   100% 0 0   100%
tenancy/choices.py (no function)   100% 8 0 0   100% 0 0   100%
tenancy/filtersets.py ContactFilterSet.search   0% 3 3 0   0% 2 0   0%
tenancy/filtersets.py ContactAssignmentFilterSet.search   0% 3 3 0   0% 2 0   0%
tenancy/filtersets.py TenantFilterSet.search   0% 3 3 0   0% 2 0   0%
tenancy/filtersets.py (no function)   100% 70 0 0   100% 0 0   100%
tenancy/forms/__init__.py (no function)   100% 5 0 0   100% 0 0   100%
tenancy/forms/bulk_edit.py (no function)   100% 45 0 0   100% 0 0   100%
tenancy/forms/bulk_import.py (no function)   100% 40 0 0   100% 0 0   100%
tenancy/forms/filtersets.py (no function)   100% 43 0 0   100% 0 0   100%
tenancy/forms/forms.py (no function)   100% 15 0 0   100% 0 0   100%
tenancy/forms/model_forms.py (no function)   100% 51 0 0   100% 0 0   100%
tenancy/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tenancy/graphql/enums.py (no function)   100% 4 0 0   100% 0 0   100%
tenancy/graphql/filter_mixins.py (no function)   89% 18 2 0   50% 2 1   85%
tenancy/graphql/filters.py (no function)   89% 84 9 0   50% 2 1   88%
tenancy/graphql/mixins.py (no function)   100% 5 0 0   100% 0 0   100%
tenancy/graphql/schema.py (no function)   100% 17 0 0   100% 0 0   100%
tenancy/graphql/types.py (no function)   76% 29 7 0   50% 2 1   74%
tenancy/models/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
tenancy/models/contacts.py ContactGroupManager.annotate_contacts   100% 1 0 0   100% 0 0   100%
tenancy/models/contacts.py Contact.__str__   100% 1 0 0   100% 0 0   100%
tenancy/models/contacts.py ContactAssignment.__str__   0% 3 3 0   0% 2 0   0%
tenancy/models/contacts.py ContactAssignment.get_absolute_url   0% 1 1 0   100% 0 0   0%
tenancy/models/contacts.py ContactAssignment.clean   0% 3 3 0   0% 2 0   0%
tenancy/models/contacts.py ContactAssignment.to_objectchange   0% 3 3 0   100% 0 0   0%
tenancy/models/contacts.py (no function)   100% 59 0 0   100% 0 0   100%
tenancy/models/tenants.py TenantGroup.delete   83% 6 1 0   50% 2 1   75%
tenancy/models/tenants.py Tenant.__str__   100% 1 0 0   100% 0 0   100%
tenancy/models/tenants.py (no function)   100% 27 0 0   100% 0 0   100%
tenancy/search.py (no function)   100% 27 0 0   100% 0 0   100%
tenancy/tables/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
tenancy/tables/columns.py TenantColumn.__init__   100% 1 0 0   100% 0 0   100%
tenancy/tables/columns.py TenantColumn.value   0% 1 1 0   100% 0 0   0%
tenancy/tables/columns.py TenantGroupColumn.__init__   67% 3 1 0   50% 2 1   60%
tenancy/tables/columns.py TenantGroupColumn.value   0% 1 1 0   100% 0 0   0%
tenancy/tables/columns.py (no function)   100% 18 0 0   100% 0 0   100%
tenancy/tables/contacts.py (no function)   100% 49 0 0   100% 0 0   100%
tenancy/tables/template_code.py (no function)   100% 2 0 0   100% 0 0   100%
tenancy/tables/tenants.py (no function)   100% 21 0 0   100% 0 0   100%
tenancy/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
tenancy/ui/panels.py (no function)   100% 14 0 0   100% 0 0   100%
tenancy/urls.py (no function)   100% 5 0 0   100% 0 0   100%
tenancy/views.py TenantGroupView.get_extra_context   0% 2 2 0   100% 0 0   0%
tenancy/views.py TenantView.get_extra_context   0% 1 1 0   100% 0 0   0%
tenancy/views.py ContactGroupView.get_extra_context   0% 2 2 0   100% 0 0   0%
tenancy/views.py ContactRoleView.get_extra_context   0% 1 1 0   100% 0 0   0%
tenancy/views.py ContactBulkEditView.post_save_operations   0% 5 5 0   0% 4 0   0%
tenancy/views.py ContactAssignmentEditView.alter_object   0% 4 4 0   0% 2 0   0%
tenancy/views.py ContactAssignmentEditView.get_extra_addanother_params   0% 1 1 0   100% 0 0   0%
tenancy/views.py (no function)   100% 240 0 0   100% 0 0   100%
users/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
users/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
users/api/serializers.py (no function)   100% 4 0 0   100% 0 0   100%
users/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
users/api/serializers_/mixins.py (no function)   100% 5 0 0   100% 0 0   100%
users/api/serializers_/nested.py NestedUserSerializer.get_display   0% 3 3 0   0% 2 0   0%
users/api/serializers_/nested.py (no function)   100% 17 0 0   100% 0 0   100%
users/api/serializers_/owners.py (no function)   100% 19 0 0   100% 0 0   100%
users/api/serializers_/permissions.py (no function)   100% 14 0 0   100% 0 0   100%
users/api/serializers_/tokens.py TokenSerializer.get_fields   100% 4 0 0   100% 2 0   100%
users/api/serializers_/tokens.py TokenSerializer.validate   80% 5 1 0   50% 2 1   71%
users/api/serializers_/tokens.py TokenSerializer.create   0% 6 6 0   0% 4 0   0%
users/api/serializers_/tokens.py TokenSerializer.to_representation   80% 5 1 0   50% 4 2   67%
users/api/serializers_/tokens.py TokenProvisionSerializer.validate   71% 7 2 0   50% 2 1   67%
users/api/serializers_/tokens.py (no function)   100% 32 0 0   100% 0 0   100%
users/api/serializers_/users.py UserSerializer.validate   100% 3 0 0   100% 2 0   100%
users/api/serializers_/users.py UserSerializer.create   0% 5 5 0   100% 0 0   0%
users/api/serializers_/users.py UserSerializer.update   0% 4 4 0   0% 2 0   0%
users/api/serializers_/users.py UserSerializer.get_display   67% 3 1 0   50% 2 1   60%
users/api/serializers_/users.py (no function)   100% 29 0 0   100% 0 0   100%
users/api/urls.py (no function)   100% 14 0 0   100% 0 0   100%
users/api/views.py UsersRootView.get_view_name   0% 1 1 0   100% 0 0   0%
users/api/views.py TokenProvisionView.post   50% 4 2 0   100% 0 0   50%
users/api/views.py TokenProvisionView.perform_create   0% 4 4 0   100% 0 0   0%
users/api/views.py UserConfigViewSet.get_queryset   100% 1 0 0   100% 0 0   100%
users/api/views.py UserConfigViewSet.list   100% 2 0 0   100% 0 0   100%
users/api/views.py UserConfigViewSet.patch   100% 4 0 0   100% 0 0   100%
users/api/views.py (no function)   100% 55 0 0   100% 0 0   100%
users/apps.py UsersConfig.ready   100% 3 0 0   100% 0 0   100%
users/apps.py (no function)   100% 4 0 0   100% 0 0   100%
users/choices.py (no function)   100% 7 0 0   100% 0 0   100%
users/constants.py (no function)   100% 9 0 0   100% 0 0   100%
users/filterset_mixins.py (no function)   100% 9 0 0   100% 0 0   100%
users/filtersets.py GroupFilterSet.search   0% 3 3 0   0% 2 0   0%
users/filtersets.py UserFilterSet.search   0% 3 3 0   0% 2 0   0%
users/filtersets.py TokenFilterSet.search   0% 3 3 0   0% 2 0   0%
users/filtersets.py ObjectPermissionFilterSet.search   0% 3 3 0   0% 2 0   0%
users/filtersets.py ObjectPermissionFilterSet._check_action   0% 4 4 0   0% 2 0   0%
users/filtersets.py OwnerGroupFilterSet.search   0% 3 3 0   0% 2 0   0%
users/filtersets.py OwnerFilterSet.search   0% 3 3 0   0% 2 0   0%
users/filtersets.py (no function)   100% 91 0 0   100% 0 0   100%
users/forms/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
users/forms/bulk_edit.py (no function)   100% 56 0 0   100% 0 0   100%
users/forms/bulk_import.py UserImportForm.save   0% 2 2 0   100% 0 0   0%
users/forms/bulk_import.py TokenImportForm.__init__   0% 3 3 0   0% 2 0   0%
users/forms/bulk_import.py (no function)   100% 33 0 0   100% 0 0   100%
users/forms/filtersets.py (no function)   100% 49 0 0   100% 0 0   100%
users/forms/model_forms.py UserConfigFormMetaclass.__new__   91% 11 1 0   67% 6 2   82%
users/forms/model_forms.py UserConfigForm.__init__   0% 5 5 0   0% 2 0   0%
users/forms/model_forms.py UserConfigForm.save   0% 7 7 0   0% 6 0   0%
users/forms/model_forms.py UserConfigForm.plugin_fields   0% 1 1 0   100% 0 0   0%
users/forms/model_forms.py UserTokenForm.__init__   0% 6 6 0   0% 4 0   0%
users/forms/model_forms.py UserTokenForm.save   0% 7 7 0   0% 4 0   0%
users/forms/model_forms.py TokenForm.__init__   0% 3 3 0   0% 2 0   0%
users/forms/model_forms.py TokenForm.clean   0% 8 8 0   0% 6 0   0%
users/forms/model_forms.py UserForm.__init__   0% 4 4 0   0% 2 0   0%
users/forms/model_forms.py UserForm.save   0% 5 5 0   0% 2 0   0%
users/forms/model_forms.py UserForm.clean   0% 4 4 0   0% 4 0   0%
users/forms/model_forms.py GroupForm.__init__   0% 3 3 0   0% 2 0   0%
users/forms/model_forms.py GroupForm.save   0% 3 3 0   100% 0 0   0%
users/forms/model_forms.py get_object_types_choices   0% 8 8 0   0% 2 0   0%
users/forms/model_forms.py ObjectPermissionForm.__init__   0% 44 44 0   0% 40 0   0%
users/forms/model_forms.py ObjectPermissionForm.clean   0% 29 29 0   0% 24 0   0%
users/forms/model_forms.py ObjectPermissionForm.save   0% 4 4 0   100% 0 0   0%
users/forms/model_forms.py (no function)   100% 105 0 0   100% 0 0   100%
users/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
users/graphql/filters.py (no function)   100% 33 0 0   100% 0 0   100%
users/graphql/mixins.py (no function)   86% 7 1 0   50% 2 1   78%
users/graphql/schema.py (no function)   100% 13 0 0   100% 0 0   100%
users/graphql/types.py (no function)   100% 14 0 0   100% 0 0   100%
users/models/__init__.py (no function)   100% 5 0 0   100% 0 0   100%
users/models/owners.py OwnerGroup.__str__   100% 1 0 0   100% 0 0   100%
users/models/owners.py OwnerGroup.get_absolute_url   0% 1 1 0   100% 0 0   0%
users/models/owners.py Owner.__str__   100% 1 0 0   100% 0 0   100%
users/models/owners.py Owner.get_absolute_url   0% 1 1 0   100% 0 0   0%
users/models/owners.py (no function)   100% 27 0 0   100% 0 0   100%
users/models/permissions.py ObjectPermission.__str__   0% 1 1 0   100% 0 0   0%
users/models/permissions.py ObjectPermission.can_view   0% 1 1 0   100% 0 0   0%
users/models/permissions.py ObjectPermission.can_add   0% 1 1 0   100% 0 0   0%
users/models/permissions.py ObjectPermission.can_change   0% 1 1 0   100% 0 0   0%
users/models/permissions.py ObjectPermission.can_delete   0% 1 1 0   100% 0 0   0%
users/models/permissions.py ObjectPermission.list_constraints   0% 3 3 0   0% 2 0   0%
users/models/permissions.py ObjectPermission.get_registered_actions   0% 14 14 0   0% 6 0   0%
users/models/permissions.py ObjectPermission.get_additional_actions   0% 5 5 0   0% 4 0   0%
users/models/permissions.py ObjectPermission.get_absolute_url   0% 1 1 0   100% 0 0   0%
users/models/permissions.py (no function)   100% 37 0 0   100% 0 0   100%
users/models/preferences.py UserConfig.get   0% 17 17 0   0% 4 0   0%
users/models/preferences.py UserConfig.all   0% 1 1 0   100% 0 0   0%
users/models/preferences.py UserConfig.set   0% 17 17 0   0% 12 0   0%
users/models/preferences.py UserConfig.clear   0% 11 11 0   0% 8 0   0%
users/models/preferences.py (no function)   100% 19 0 0   100% 0 0   100%
users/models/tokens.py Token.__init__   100% 2 0 0   100% 0 0   100%
users/models/tokens.py Token.__str__   100% 1 0 0   100% 0 0   100%
users/models/tokens.py Token.get_absolute_url   0% 1 1 0   100% 0 0   0%
users/models/tokens.py Token.v1   100% 1 0 0   100% 0 0   100%
users/models/tokens.py Token.v2   100% 1 0 0   100% 0 0   100%
users/models/tokens.py Token.partial   0% 1 1 0   100% 0 0   0%
users/models/tokens.py Token.token   100% 1 0 0   100% 0 0   100%
users/models/tokens.py Token.token   78% 9 2 0   62% 8 3   71%
users/models/tokens.py Token.is_expired   67% 3 1 0   50% 2 1   60%
users/models/tokens.py Token.is_active   0% 1 1 0   100% 0 0   0%
users/models/tokens.py Token.get_auth_header_prefix   60% 5 2 0   50% 4 2   56%
users/models/tokens.py Token.clean   29% 14 10 0   30% 10 3   29%
users/models/tokens.py Token.save   100% 3 0 0   100% 2 0   100%
users/models/tokens.py Token.generate_key   100% 1 0 0   100% 0 0   100%
users/models/tokens.py Token.generate   100% 1 0 0   100% 0 0   100%
users/models/tokens.py Token.update_digest   100% 2 0 0   100% 0 0   100%
users/models/tokens.py Token.validate   64% 11 4 0   50% 4 2   60%
users/models/tokens.py Token.validate_client_ip   0% 6 6 0   0% 6 0   0%
users/models/tokens.py (no function)   100% 69 0 0   100% 0 0   100%
users/models/users.py Group.__str__   100% 1 0 0   100% 0 0   100%
users/models/users.py Group.get_absolute_url   0% 1 1 0   100% 0 0   0%
users/models/users.py Group.natural_key   0% 1 1 0   100% 0 0   0%
users/models/users.py UserManager.create_user   0% 2 2 0   100% 0 0   0%
users/models/users.py UserManager.acreate_user   0% 2 2 0   100% 0 0   0%
users/models/users.py UserManager.create_superuser   75% 4 1 0   50% 2 1   67%
users/models/users.py UserManager.acreate_superuser   0% 4 4 0   0% 2 0   0%
users/models/users.py User.get_absolute_url   0% 1 1 0   100% 0 0   0%
users/models/users.py User.clean   80% 5 1 0   50% 2 1   71%
users/models/users.py User.get_full_name   100% 2 0 0   100% 0 0   100%
users/models/users.py User.get_short_name   0% 1 1 0   100% 0 0   0%
users/models/users.py User.email_user   0% 1 1 0   100% 0 0   0%
users/models/users.py (no function)   100% 59 0 0   100% 0 0   100%
users/preferences.py UserPreference.__init__   100% 6 0 0   100% 0 0   100%
users/preferences.py (no function)   100% 2 0 0   100% 0 0   100%
users/signals.py log_user_login_failed   67% 6 2 0   50% 2 1   62%
users/signals.py set_language_on_login   0% 3 3 0   0% 4 0   0%
users/signals.py create_userconfig   100% 3 0 0   50% 2 1   80%
users/signals.py (no function)   100% 13 0 0   100% 0 0   100%
users/tables.py (no function)   100% 70 0 0   100% 0 0   100%
users/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
users/ui/panels.py ObjectPermissionActionsPanel.get_context   0% 3 3 0   100% 0 0   0%
users/ui/panels.py (no function)   100% 38 0 0   100% 0 0   100%
users/urls.py (no function)   100% 5 0 0   100% 0 0   100%
users/utils.py user_may_grant_token   0% 22 22 0   0% 14 0   0%
users/utils.py clean_username   0% 4 4 0   100% 0 0   0%
users/utils.py get_current_pepper   75% 4 1 0   50% 2 1   67%
users/utils.py (no function)   100% 7 0 0   100% 0 0   100%
users/views.py TokenView.get_extra_context   0% 4 4 0   0% 2 0   0%
users/views.py TokenEditView.alter_object   0% 2 2 0   100% 0 0   0%
users/views.py TokenBulkImportView.save_object   0% 4 4 0   0% 2 0   0%
users/views.py UserView.get_extra_context   0% 5 5 0   100% 0 0   0%
users/views.py OwnerView.get_extra_context   0% 1 1 0   100% 0 0   0%
users/views.py (no function)   100% 234 0 0   100% 0 0   100%
utilities/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
utilities/api.py IsSuperuser.has_permission   100% 1 0 0   100% 0 0   100%
utilities/api.py get_serializer_for_model   31% 16 11 0   17% 6 1   27%
utilities/api.py get_graphql_type_for_model   0% 6 6 0   100% 0 0   0%
utilities/api.py is_api_request   100% 1 0 0   100% 0 0   100%
utilities/api.py is_graphql_request   0% 1 1 0   100% 0 0   0%
utilities/api.py get_view_name   100% 6 0 0   100% 4 0   100%
utilities/api.py get_positional_errors   67% 3 1 0   50% 2 1   60%
utilities/api.py _get_nested_serializer   100% 9 0 0   100% 8 0   100%
utilities/api.py _get_serializer_fields   100% 3 0 0   100% 0 0   100%
utilities/api.py get_prefetches_for_serializer   93% 28 2 0   86% 14 2   90%
utilities/api.py get_annotations_for_serializer   85% 13 2 0   75% 8 2   81%
utilities/api.py get_related_object_by_attrs   91% 22 2 0   67% 6 2   86%
utilities/api.py (no function)   100% 32 0 0   100% 0 0   100%
utilities/apps.py get_installed_apps   100% 8 0 0   100% 6 0   100%
utilities/apps.py (no function)   100% 2 0 0   100% 0 0   100%
utilities/choices.py Choice.__new__   100% 6 0 0   100% 0 0   100%
utilities/choices.py Choice.__getnewargs__   100% 1 0 0   100% 0 0   100%
utilities/choices.py Choice.__repr__   0% 1 1 0   100% 0 0   0%
utilities/choices.py ChoiceSetMeta.__new__   86% 21 3 0   75% 12 3   82%
utilities/choices.py ChoiceSetMeta.__new__.register   90% 10 1 0   88% 8 1   89%
utilities/choices.py ChoiceSetMeta.__call__   0% 1 1 0   100% 0 0   0%
utilities/choices.py ChoiceSetMeta.__iter__   100% 1 0 0   100% 0 0   100%
utilities/choices.py ChoiceSet.values   100% 1 0 0   100% 0 0   100%
utilities/choices.py ChoiceSet.as_enum   100% 4 0 0   100% 0 0   100%
utilities/choices.py unpack_grouped_choices   100% 7 0 0   100% 6 0   100%
utilities/choices.py (no function)   100% 24 0 0   100% 0 0   100%
utilities/constants.py (no function)   100% 15 0 0   100% 0 0   100%
utilities/conversion.py _normalized_measurement   0% 10 10 0   0% 4 0   0%
utilities/conversion.py to_grams   0% 1 1 0   100% 0 0   0%
utilities/conversion.py to_meters   0% 1 1 0   100% 0 0   0%
utilities/conversion.py to_millimeters   0% 1 1 0   100% 0 0   0%
utilities/conversion.py to_liters_per_minute   0% 1 1 0   100% 0 0   0%
utilities/conversion.py (no function)   100% 10 0 0   100% 0 0   100%
utilities/counters.py get_counters_for_model   100% 1 0 0   100% 0 0   100%
utilities/counters.py update_counter   100% 1 0 0   100% 0 0   100%
utilities/counters.py update_counts   0% 2 2 0   100% 0 0   0%
utilities/counters.py post_save_receiver   89% 9 1 0   83% 6 1   87%
utilities/counters.py _parent_is_being_deleted   60% 5 2 0   50% 4 2   56%
utilities/counters.py pre_delete_receiver   88% 8 1 0   83% 6 1   86%
utilities/counters.py post_delete_receiver   86% 7 1 0   83% 6 1   85%
utilities/counters.py connect_counters   100% 14 0 0   100% 6 0   100%
utilities/counters.py (no function)   100% 14 0 0   100% 0 0   100%
utilities/data.py get_config_value_ci   57% 7 3 0   33% 6 2   46%
utilities/data.py deepmerge   50% 6 3 0   25% 4 1   40%
utilities/data.py flatten_dict   0% 7 7 0   0% 4 0   0%
utilities/data.py shallow_compare_dict   0% 7 7 0   0% 6 0   0%
utilities/data.py deep_compare_dict   0% 18 18 0   0% 10 0   0%
utilities/data.py normalize_update_fields   60% 5 2 0   50% 2 1   57%
utilities/data.py array_to_ranges   0% 2 2 0   100% 0 0   0%
utilities/data.py array_to_string   0% 7 7 0   0% 4 0   0%
utilities/data.py drange   0% 8 8 0   0% 6 0   0%
utilities/data.py get_inclusive_integer_range_bounds   100% 3 0 0   100% 0 0   100%
utilities/data.py normalize_integer_range   100% 2 0 0   100% 0 0   100%
utilities/data.py check_ranges_overlap   43% 7 4 0   25% 4 1   36%
utilities/data.py ranges_to_string_list   0% 7 7 0   0% 4 0   0%
utilities/data.py ranges_to_string   0% 3 3 0   0% 2 0   0%
utilities/data.py string_to_ranges   0% 15 15 0   0% 8 0   0%
utilities/data.py resolve_attr_path   0% 9 9 0   0% 4 0   0%
utilities/data.py (no function)   100% 20 0 0   100% 0 0   100%
utilities/datetime.py local_now   0% 1 1 0   100% 0 0   0%
utilities/datetime.py datetime_from_timestamp   100% 1 0 0   100% 0 0   100%
utilities/datetime.py (no function)   100% 6 0 0   100% 0 0   100%
utilities/debug.py show_toolbar   0% 7 7 0   0% 6 0   0%
utilities/debug.py (no function)   0% 4 4 0   100% 0 0   0%
utilities/error_handlers.py handle_protectederror   0% 13 13 0   0% 8 0   0%
utilities/error_handlers.py handle_rest_api_exception   67% 9 3 0   50% 2 1   64%
utilities/error_handlers.py (no function)   100% 13 0 0   100% 0 0   100%
utilities/exceptions.py AbortRequest.__init__   0% 1 1 0   100% 0 0   0%
utilities/exceptions.py PreconditionFailed.__init__   0% 2 2 0   100% 0 0   0%
utilities/exceptions.py (no function)   100% 20 0 0   100% 0 0   100%
utilities/export.py TableExport.__init__   0% 4 4 0   0% 2 0   0%
utilities/export.py TableExport.export   0% 4 4 0   0% 2 0   0%
utilities/export.py _EchoBuffer.write   0% 1 1 0   100% 0 0   0%
utilities/export.py stream_table_csv_response   0% 12 12 0   0% 4 0   0%
utilities/export.py stream_table_csv_response.iter_records   0% 3 3 0   0% 2 0   0%
utilities/export.py stream_table_csv_response.row_generator   0% 4 4 0   0% 2 0   0%
utilities/export.py (no function)   100% 17 0 0   100% 0 0   100%
utilities/fields.py ColorField.__init__   100% 2 0 0   100% 0 0   100%
utilities/fields.py ColorField.formfield   100% 2 0 0   100% 0 0   100%
utilities/fields.py NaturalOrderingField.__init__   100% 3 0 0   100% 0 0   100%
utilities/fields.py NaturalOrderingField.pre_save   100% 4 0 0   100% 0 0   100%
utilities/fields.py NaturalOrderingField.deconstruct   100% 3 0 0   100% 0 0   100%
utilities/fields.py RestrictedGenericForeignKeyDescriptor.get_prefetch_querysets   0% 1 1 0   100% 0 0   0%
utilities/fields.py RestrictedGenericForeignKey.contribute_to_class   100% 2 0 0   100% 0 0   100%
utilities/fields.py RestrictedGenericForeignKey.get_prefetch_querysets   0% 36 36 0   0% 22 0   0%
utilities/fields.py RestrictedGenericForeignKey.get_prefetch_querysets.gfk_key   0% 6 6 0   0% 4 0   0%
utilities/fields.py CounterCacheField.__init__   78% 9 2 0   50% 4 2   69%
utilities/fields.py CounterCacheField.deconstruct   100% 4 0 0   100% 0 0   100%
utilities/fields.py GenericArrayForeignKey.__init__   100% 4 0 0   100% 0 0   100%
utilities/fields.py GenericArrayForeignKey.contribute_to_class   100% 2 0 0   100% 0 0   100%
utilities/fields.py GenericArrayForeignKey.cache_name   0% 1 1 0   100% 0 0   0%
utilities/fields.py GenericArrayForeignKey.get_cache_name   0% 1 1 0   100% 0 0   0%
utilities/fields.py GenericArrayForeignKey._get_ids   0% 1 1 0   100% 0 0   0%
utilities/fields.py GenericArrayForeignKey.get_content_type_by_id   0% 1 1 0   100% 0 0   0%
utilities/fields.py GenericArrayForeignKey.get_content_type_of_obj   0% 1 1 0   100% 0 0   0%
utilities/fields.py GenericArrayForeignKey.get_content_type_for_model   0% 1 1 0   100% 0 0   0%
utilities/fields.py GenericArrayForeignKey.get_prefetch_querysets   0% 32 32 0   0% 24 0   0%
utilities/fields.py GenericArrayForeignKey.__get__   0% 22 22 0   0% 10 0   0%
utilities/fields.py (no function)   100% 45 0 0   100% 0 0   100%
utilities/filters.py multivalue_field_factory   100% 6 0 0   100% 0 0   100%
utilities/filters.py multivalue_field_factory.NewField.to_python   100% 4 0 0   100% 2 0   100%
utilities/filters.py multivalue_field_factory.NewField.run_validators   100% 2 0 0   100% 2 0   100%
utilities/filters.py multivalue_field_factory.NewField.validate   100% 2 0 0   100% 2 0   100%
utilities/filters.py MultiValueArrayFilter.__init__   0% 1 1 0   100% 0 0   0%
utilities/filters.py MultiValueArrayFilter.get_filter_predicate   0% 3 3 0   0% 2 0   0%
utilities/filters.py MultiValueMACAddressFilter.filter   100% 4 0 0   100% 0 0   100%
utilities/filters.py TreeNodeMultipleChoiceFilter.get_filter_predicate   0% 3 3 0   0% 2 0   0%
utilities/filters.py TreeNodeMultipleChoiceFilter.filter   100% 2 0 0   100% 0 0   100%
utilities/filters.py NullableCharFieldFilter.filter   0% 4 4 0   0% 2 0   0%
utilities/filters.py NumericArrayFilter.filter   67% 3 1 0   50% 2 1   60%
utilities/filters.py ContentTypeFilter.filter   0% 8 8 0   0% 2 0   0%
utilities/filters.py MultiValueContentTypeFilter.filter   82% 11 2 0   100% 4 0   87%
utilities/filters.py (no function)   100% 56 0 0   100% 0 0   100%
utilities/filtersets.py register_filterset   100% 4 0 0   100% 0 0   100%
utilities/filtersets.py (no function)   100% 3 0 0   100% 0 0   100%
utilities/forms/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
utilities/forms/bulk_import.py BulkImportForm.clean   0% 25 25 0   0% 16 0   0%
utilities/forms/bulk_import.py BulkImportForm._detect_format   0% 12 12 0   0% 6 0   0%
utilities/forms/bulk_import.py BulkImportForm._clean_csv   0% 18 18 0   0% 6 0   0%
utilities/forms/bulk_import.py BulkImportForm._clean_json   0% 7 7 0   0% 2 0   0%
utilities/forms/bulk_import.py BulkImportForm._clean_yaml   0% 11 11 0   0% 6 0   0%
utilities/forms/bulk_import.py (no function)   100% 24 0 0   100% 0 0   100%
utilities/forms/constants.py (no function)   100% 5 0 0   100% 0 0   100%
utilities/forms/fields/__init__.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/forms/fields/array.py NumericArrayField.clean   0% 3 3 0   0% 2 0   0%
utilities/forms/fields/array.py NumericArrayField.to_python   0% 5 5 0   0% 4 0   0%
utilities/forms/fields/array.py NumericRangeArrayField.__init__   100% 3 0 0   50% 2 1   80%
utilities/forms/fields/array.py NumericRangeArrayField.clean   0% 3 3 0   0% 2 0   0%
utilities/forms/fields/array.py NumericRangeArrayField.prepare_value   0% 3 3 0   0% 2 0   0%
utilities/forms/fields/array.py NumericRangeArrayField.to_python   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/array.py (no function)   100% 15 0 0   100% 0 0   100%
utilities/forms/fields/choices.py _map_choice_attr   100% 13 0 0   100% 8 0   100%
utilities/forms/fields/choices.py _parent_choices_property   80% 5 1 0   75% 4 1   78%
utilities/forms/fields/choices.py AttrChoiceMixin.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/fields/choices.py AttrChoiceMixin._get_choices   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/choices.py AttrChoiceMixin._set_choices   100% 3 0 0   50% 2 1   80%
utilities/forms/fields/choices.py TypedChoiceField.__init__   100% 1 0 0   100% 0 0   100%
utilities/forms/fields/choices.py (no function)   100% 18 0 0   100% 0 0   100%
utilities/forms/fields/content_types.py ContentTypeChoiceMixin.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/fields/content_types.py ContentTypeChoiceMixin.label_from_instance   0% 4 4 0   100% 0 0   0%
utilities/forms/fields/content_types.py (no function)   100% 10 0 0   100% 0 0   100%
utilities/forms/fields/csv.py CSVSelectWidget.value_omitted_from_data   0% 4 4 0   0% 2 0   0%
utilities/forms/fields/csv.py CSVChoicesMixin.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/fields/csv.py CSVMultipleChoiceField.to_python   0% 5 5 0   0% 4 0   0%
utilities/forms/fields/csv.py CSVModelChoiceField.to_python   0% 6 6 0   100% 0 0   0%
utilities/forms/fields/csv.py CSVModelMultipleChoiceField.clean   0% 3 3 0   0% 2 0   0%
utilities/forms/fields/csv.py CSVContentTypeField.prepare_value   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/csv.py CSVContentTypeField.to_python   0% 10 10 0   0% 2 0   0%
utilities/forms/fields/csv.py CSVMultipleContentTypeField.prepare_value   0% 9 9 0   0% 6 0   0%
utilities/forms/fields/csv.py (no function)   100% 33 0 0   100% 0 0   100%
utilities/forms/fields/dynamic.py DynamicChoiceField.get_bound_field   0% 6 6 0   0% 2 0   0%
utilities/forms/fields/dynamic.py DynamicMultipleChoiceField.get_bound_field   0% 6 6 0   0% 2 0   0%
utilities/forms/fields/dynamic.py DynamicModelChoiceMixin.__init__   100% 10 0 0   100% 0 0   100%
utilities/forms/fields/dynamic.py DynamicModelChoiceMixin.widget_attrs   100% 10 0 0   100% 8 0   100%
utilities/forms/fields/dynamic.py DynamicModelChoiceMixin.get_bound_field   0% 33 33 0   0% 24 0   0%
utilities/forms/fields/dynamic.py DynamicModelChoiceField.clean   0% 3 3 0   0% 2 0   0%
utilities/forms/fields/dynamic.py DynamicModelMultipleChoiceField.clean   0% 5 5 0   0% 2 0   0%
utilities/forms/fields/dynamic.py (no function)   100% 23 0 0   100% 0 0   100%
utilities/forms/fields/expandable.py ExpandableNameField.__init__   100% 3 0 0   100% 2 0   100%
utilities/forms/fields/expandable.py ExpandableNameField.to_python   0% 5 5 0   0% 4 0   0%
utilities/forms/fields/expandable.py ExpandableNumericField.__init__   100% 3 0 0   50% 2 1   80%
utilities/forms/fields/expandable.py ExpandableIPNetworkField.__init__   100% 3 0 0   50% 2 1   80%
utilities/forms/fields/expandable.py ExpandableIPNetworkField.to_python   0% 12 12 0   0% 6 0   0%
utilities/forms/fields/expandable.py (no function)   100% 15 0 0   100% 0 0   100%
utilities/forms/fields/fields.py BigIntegerField.__init__   100% 3 0 0   100% 0 0   100%
utilities/forms/fields/fields.py PositiveBigIntegerField.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/fields/fields.py CommentField.__init__   100% 1 0 0   100% 0 0   100%
utilities/forms/fields/fields.py SlugField.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/fields/fields.py SlugField.get_bound_field   0% 5 5 0   0% 4 0   0%
utilities/forms/fields/fields.py TagFilterField.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/fields/fields.py TagFilterField.__init__.get_choices   0% 2 2 0   100% 0 0   0%
utilities/forms/fields/fields.py JSONField.__init__   100% 5 0 0   100% 2 0   100%
utilities/forms/fields/fields.py JSONField.prepare_value   0% 10 10 0   0% 6 0   0%
utilities/forms/fields/fields.py MACAddressField.to_python   0% 6 6 0   100% 0 0   0%
utilities/forms/fields/fields.py (no function)   100% 44 0 0   100% 0 0   100%
utilities/forms/fields/generic.py GenericObjectChoiceField.__init__   100% 15 0 0   100% 2 0   100%
utilities/forms/fields/generic.py GenericObjectChoiceField.content_type_field   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.object_field   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.queryset   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.queryset   0% 2 2 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField._set_object_queryset   0% 2 2 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField._get_object_queryset   0% 4 4 0   0% 2 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField._sync_widget_refs   0% 4 4 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField._resolve_subvalue   0% 11 11 0   0% 8 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField._get_content_type   0% 12 12 0   0% 4 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField._configure_object_field   0% 27 27 0   0% 10 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.prepare   0% 7 7 0   0% 2 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.get_bound_field   0% 2 2 0   100% 0 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.clean   0% 20 20 0   0% 12 0   0%
utilities/forms/fields/generic.py GenericObjectChoiceField.compress   0% 1 1 0   100% 0 0   0%
utilities/forms/fields/generic.py (no function)   100% 31 0 0   100% 0 0   100%
utilities/forms/forms.py DeleteForm.__init__   0% 3 3 0   0% 2 0   0%
utilities/forms/forms.py BulkRenameForm.clean   0% 6 6 0   0% 2 0   0%
utilities/forms/forms.py BulkDeleteForm.__init__   0% 4 4 0   0% 2 0   0%
utilities/forms/forms.py CSVModelForm.__init__   0% 5 5 0   0% 4 0   0%
utilities/forms/forms.py CSVModelForm.clean   0% 4 4 0   0% 4 0   0%
utilities/forms/forms.py TableConfigForm.__init__   0% 5 5 0   0% 2 0   0%
utilities/forms/forms.py TableConfigForm.table_name   0% 1 1 0   100% 0 0   0%
utilities/forms/forms.py (no function)   100% 36 0 0   100% 0 0   100%
utilities/forms/mixins.py BackgroundJobMixin.__init__   0% 4 4 0   0% 2 0   0%
utilities/forms/mixins.py CheckLastUpdatedMixin.clean   0% 9 9 0   0% 8 0   0%
utilities/forms/mixins.py GenericObjectFormMixin.__init__   0% 11 11 0   0% 8 0   0%
utilities/forms/mixins.py GenericObjectFormMixin._generic_object_fields   0% 3 3 0   0% 4 0   0%
utilities/forms/mixins.py GenericObjectFormMixin._warn_missing_htmx_fieldsets   0% 4 4 0   0% 4 0   0%
utilities/forms/mixins.py GenericObjectFormMixin.clean   0% 9 9 0   0% 8 0   0%
utilities/forms/mixins.py FilterModifierMixin.__init__   0% 2 2 0   100% 0 0   0%
utilities/forms/mixins.py FilterModifierMixin._enhance_fields_with_modifiers   0% 14 14 0   0% 10 0   0%
utilities/forms/mixins.py FilterModifierMixin._get_lookup_choices   0% 4 4 0   0% 4 0   0%
utilities/forms/mixins.py FilterModifierMixin._verify_lookups_with_filterset   0% 8 8 0   0% 6 0   0%
utilities/forms/mixins.py (no function)   100% 31 0 0   100% 0 0   100%
utilities/forms/rendering.py FieldSet.__init__   67% 6 2 0   25% 4 1   50%
utilities/forms/rendering.py InlineFields.__init__   100% 3 0 0   100% 0 0   100%
utilities/forms/rendering.py TabbedGroups.__init__   80% 5 1 0   75% 4 1   78%
utilities/forms/rendering.py TabbedGroups.tabs   0% 1 1 0   100% 0 0   0%
utilities/forms/rendering.py M2MAddRemoveFields.__init__   100% 1 0 0   100% 0 0   100%
utilities/forms/rendering.py ObjectAttribute.__init__   100% 1 0 0   100% 0 0   100%
utilities/forms/rendering.py (no function)   100% 19 0 0   100% 0 0   100%
utilities/forms/utils.py parse_numeric_range   0% 20 20 0   0% 10 0   0%
utilities/forms/utils.py parse_alphanumeric_range   0% 24 24 0   0% 18 0   0%
utilities/forms/utils.py expand_alphanumeric_pattern   0% 7 7 0   0% 6 0   0%
utilities/forms/utils.py expand_ipnetwork_pattern   0% 14 14 0   0% 10 0   0%
utilities/forms/utils.py get_capacity_unit_label   0% 1 1 0   100% 0 0   0%
utilities/forms/utils.py get_field_value   0% 7 7 0   0% 6 0   0%
utilities/forms/utils.py get_selected_values   0% 18 18 0   0% 12 0   0%
utilities/forms/utils.py add_blank_choice   100% 1 0 0   100% 0 0   100%
utilities/forms/utils.py form_from_model   100% 5 0 0   100% 2 0   100%
utilities/forms/utils.py restrict_form_fields   0% 3 3 0   0% 4 0   0%
utilities/forms/utils.py parse_csv   0% 19 19 0   0% 12 0   0%
utilities/forms/utils.py validate_csv   0% 15 15 0   0% 16 0   0%
utilities/forms/utils.py (no function)   100% 20 0 0   100% 0 0   100%
utilities/forms/widgets/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
utilities/forms/widgets/apiselect.py APISelect.get_context   0% 4 4 0   0% 2 0   0%
utilities/forms/widgets/apiselect.py APISelect.__init__   100% 6 0 0   100% 2 0   100%
utilities/forms/widgets/apiselect.py APISelect.__deepcopy__   100% 4 0 0   100% 0 0   100%
utilities/forms/widgets/apiselect.py APISelect._process_query_param   68% 19 6 0   75% 16 4   71%
utilities/forms/widgets/apiselect.py APISelect._process_query_params   100% 5 0 0   100% 6 0   100%
utilities/forms/widgets/apiselect.py APISelect._serialize_params   100% 2 0 0   100% 0 0   100%
utilities/forms/widgets/apiselect.py APISelect._add_dynamic_params   71% 7 2 0   100% 2 0   78%
utilities/forms/widgets/apiselect.py APISelect._add_static_params   71% 7 2 0   100% 2 0   78%
utilities/forms/widgets/apiselect.py APISelect.add_query_params   100% 3 0 0   100% 0 0   100%
utilities/forms/widgets/apiselect.py APISelect.add_query_param   0% 1 1 0   100% 0 0   0%
utilities/forms/widgets/apiselect.py (no function)   100% 20 0 0   100% 0 0   100%
utilities/forms/widgets/datetime.py DatePicker.__init__   100% 3 0 0   100% 0 0   100%
utilities/forms/widgets/datetime.py DateTimePicker.__init__   100% 3 0 0   100% 0 0   100%
utilities/forms/widgets/datetime.py TimePicker.__init__   0% 3 3 0   100% 0 0   0%
utilities/forms/widgets/datetime.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/forms/widgets/generic.py GenericObjectSelect.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/widgets/generic.py GenericObjectSelect.decompress   0% 8 8 0   0% 8 0   0%
utilities/forms/widgets/generic.py (no function)   100% 9 0 0   100% 0 0   100%
utilities/forms/widgets/misc.py MarkdownWidget.__init__   75% 4 1 0   50% 2 1   67%
utilities/forms/widgets/misc.py NumberWithOptions.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/widgets/misc.py NumberWithOptions.get_context   0% 3 3 0   100% 0 0   0%
utilities/forms/widgets/misc.py SlugWidget.__init__   80% 5 1 0   50% 2 1   71%
utilities/forms/widgets/misc.py ArrayWidget.format_value   0% 3 3 0   0% 2 0   0%
utilities/forms/widgets/misc.py ChoicesWidget.format_value   0% 5 5 0   0% 4 0   0%
utilities/forms/widgets/misc.py (no function)   100% 18 0 0   100% 0 0   100%
utilities/forms/widgets/modifiers.py FilterModifierWidget.__init__   0% 3 3 0   100% 0 0   0%
utilities/forms/widgets/modifiers.py FilterModifierWidget.value_from_datadict   0% 22 22 0   0% 18 0   0%
utilities/forms/widgets/modifiers.py FilterModifierWidget.get_context   0% 31 31 0   0% 12 0   0%
utilities/forms/widgets/modifiers.py (no function)   100% 12 0 0   100% 0 0   100%
utilities/forms/widgets/select.py AttrSelectMixin.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/widgets/select.py AttrSelectMixin.__deepcopy__   100% 3 0 0   100% 0 0   100%
utilities/forms/widgets/select.py AttrSelectMixin.create_option   0% 4 4 0   0% 2 0   0%
utilities/forms/widgets/select.py BulkEditNullBooleanSelect.__init__   100% 2 0 0   100% 0 0   100%
utilities/forms/widgets/select.py ClearableSelect.__init__   100% 3 0 0   50% 2 1   80%
utilities/forms/widgets/select.py ColorSelect.__init__   100% 3 0 0   100% 0 0   100%
utilities/forms/widgets/select.py HTMXSelect.__init__   90% 10 1 0   83% 6 1   88%
utilities/forms/widgets/select.py SelectMultipleBase.optgroups   0% 13 13 0   0% 8 0   0%
utilities/forms/widgets/select.py SelectMultipleBase.create_option   0% 3 3 0   100% 0 0   0%
utilities/forms/widgets/select.py AvailableOptions.get_context   0% 3 3 0   100% 0 0   0%
utilities/forms/widgets/select.py SplitMultiSelectWidget.__init__   100% 3 0 0   100% 0 0   100%
utilities/forms/widgets/select.py SplitMultiSelectWidget.get_context   0% 4 4 0   100% 0 0   0%
utilities/forms/widgets/select.py SplitMultiSelectWidget.value_from_datadict   0% 1 1 0   100% 0 0   0%
utilities/forms/widgets/select.py (no function)   100% 36 0 0   100% 0 0   100%
utilities/html.py _attribute_filter   0% 5 5 0   0% 4 0   0%
utilities/html.py clean_html   0% 3 3 0   100% 0 0   0%
utilities/html.py foreground_color   0% 6 6 0   0% 2 0   0%
utilities/html.py highlight   0% 12 12 0   0% 6 0   0%
utilities/html.py (no function)   100% 12 0 0   100% 0 0   100%
utilities/htmx.py htmx_partial   0% 1 1 0   100% 0 0   0%
utilities/htmx.py htmx_current_url   0% 1 1 0   100% 0 0   0%
utilities/htmx.py htmx_maybe_redirect_current_page   0% 12 12 0   0% 6 0   0%
utilities/htmx.py (no function)   100% 7 0 0   100% 0 0   100%
utilities/jinja2.py env_filter   0% 4 4 0   0% 2 0   0%
utilities/jinja2.py sanitize_http_header   0% 1 1 0   100% 0 0   0%
utilities/jinja2.py DataFileLoader.__init__   0% 2 2 0   100% 0 0   0%
utilities/jinja2.py DataFileLoader.get_source   0% 11 11 0   0% 4 0   0%
utilities/jinja2.py DataFileLoader.cache_templates   0% 1 1 0   100% 0 0   0%
utilities/jinja2.py _jinja2_filters   0% 1 1 0   100% 0 0   0%
utilities/jinja2.py render_jinja2   0% 18 18 0   0% 10 0   0%
utilities/jinja2.py validate_jinja2_syntax   0% 6 6 0   100% 0 0   0%
utilities/jinja2.py (no function)   100% 25 0 0   100% 0 0   100%
utilities/jobs.py is_background_request   0% 1 1 0   100% 0 0   0%
utilities/jobs.py process_request_as_job   0% 7 7 0   0% 2 0   0%
utilities/jobs.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/json.py CustomFieldJSONEncoder.default   0% 3 3 0   0% 2 0   0%
utilities/json.py ConfigJSONEncoder.default   0% 4 4 0   0% 2 0   0%
utilities/json.py JobLogDecoder.__init__   0% 2 2 0   100% 0 0   0%
utilities/json.py JobLogDecoder._deserialize_entry   0% 6 6 0   0% 2 0   0%
utilities/json.py (no function)   100% 12 0 0   100% 0 0   100%
utilities/jsonschema.py JSONSchemaProperty.to_form_field   0% 31 31 0   0% 30 0   0%
utilities/jsonschema.py JSONSchemaProperty.field_class   0% 15 15 0   0% 8 0   0%
utilities/jsonschema.py validate_schema   67% 9 3 0   75% 4 1   69%
utilities/jsonschema.py (no function)   100% 50 0 0   100% 0 0   100%
utilities/ltree.py ltree_trigger_sql   100% 6 0 0   100% 2 0   100%
utilities/ltree.py InstallLtreeTriggers.__init__   100% 2 0 0   100% 0 0   100%
utilities/ltree.py InstallLtreeTriggers.state_forwards   100% 1 0 0   100% 0 0   100%
utilities/ltree.py InstallLtreeTriggers.database_forwards   100% 2 0 0   100% 2 0   100%
utilities/ltree.py InstallLtreeTriggers.database_backwards   0% 5 5 0   100% 0 0   0%
utilities/ltree.py InstallLtreeTriggers.describe   0% 1 1 0   100% 0 0   0%
utilities/ltree.py ReinstallLtreeTriggers.database_backwards   0% 1 1 0   100% 0 0   0%
utilities/ltree.py ReinstallLtreeTriggers.describe   0% 1 1 0   100% 0 0   0%
utilities/ltree.py (no function)   100% 22 0 0   100% 0 0   100%
utilities/management/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
utilities/management/commands/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
utilities/management/commands/calculate_cached_counts.py Command.collect_models   0% 8 8 0   0% 4 0   0%
utilities/management/commands/calculate_cached_counts.py Command.handle   0% 4 4 0   0% 4 0   0%
utilities/management/commands/calculate_cached_counts.py (no function)   0% 9 9 0   100% 0 0   0%
utilities/management/commands/rebuild_ltree_paths.py Command.add_arguments   0% 2 2 0   100% 0 0   0%
utilities/management/commands/rebuild_ltree_paths.py Command.get_models   0% 11 11 0   0% 6 0   0%
utilities/management/commands/rebuild_ltree_paths.py Command.get_models.concrete_subclasses   0% 5 5 0   0% 6 0   0%
utilities/management/commands/rebuild_ltree_paths.py Command.check_reachable   0% 7 7 0   0% 4 0   0%
utilities/management/commands/rebuild_ltree_paths.py Command.report_stale   0% 13 13 0   0% 6 0   0%
utilities/management/commands/rebuild_ltree_paths.py Command.handle   0% 16 16 0   0% 6 0   0%
utilities/management/commands/rebuild_ltree_paths.py (no function)   0% 14 14 0   100% 0 0   0%
utilities/markdown.py StrikethroughExtension.extendMarkdown   0% 1 1 0   100% 0 0   0%
utilities/markdown.py (no function)   100% 6 0 0   100% 0 0   100%
utilities/migration.py custom_deconstruct   100% 5 0 0   100% 2 0   100%
utilities/migration.py InstallDenormalizationTrigger.__init__   100% 5 0 0   100% 0 0   100%
utilities/migration.py InstallDenormalizationTrigger.function_name   100% 1 0 0   100% 0 0   100%
utilities/migration.py InstallDenormalizationTrigger.trigger_name   100% 1 0 0   100% 0 0   100%
utilities/migration.py InstallDenormalizationTrigger.state_forwards   100% 1 0 0   100% 0 0   100%
utilities/migration.py InstallDenormalizationTrigger.database_forwards   100% 14 0 0   100% 2 0   100%
utilities/migration.py InstallDenormalizationTrigger.database_backwards   0% 2 2 0   100% 0 0   0%
utilities/migration.py InstallDenormalizationTrigger.describe   0% 1 1 0   100% 0 0   0%
utilities/migration.py (no function)   100% 17 0 0   100% 0 0   100%
utilities/mptt.py (no function)   100% 9 0 0   100% 0 0   100%
utilities/mptt_to_ltree.py populate_paths_sql   100% 3 0 0   100% 2 0   100%
utilities/mptt_to_ltree.py count_stale_rows_sql   0% 8 8 0   0% 2 0   0%
utilities/mptt_to_ltree.py unreachable_rows_sql   0% 1 1 0   100% 0 0   0%
utilities/mptt_to_ltree.py assert_paths_populated_sql   100% 1 0 0   100% 0 0   100%
utilities/mptt_to_ltree.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/object_types.py object_type_identifier   0% 1 1 0   100% 0 0   0%
utilities/object_types.py object_type_name   0% 9 9 0   0% 2 0   0%
utilities/object_types.py (no function)   100% 4 0 0   100% 0 0   100%
utilities/ordering.py naturalize   20% 10 8 0   12% 8 1   17%
utilities/ordering.py naturalize_interface   90% 20 2 0   79% 14 3   85%
utilities/ordering.py (no function)   100% 5 0 0   100% 0 0   100%
utilities/paginator.py EnhancedPaginator.__init__   0% 11 11 0   0% 6 0   0%
utilities/paginator.py EnhancedPaginator._get_page   0% 1 1 0   100% 0 0   0%
utilities/paginator.py EnhancedPaginator.get_page_lengths   0% 3 3 0   0% 2 0   0%
utilities/paginator.py EnhancedPage.smart_pages   0% 9 9 0   0% 4 0   0%
utilities/paginator.py get_paginate_count   0% 12 12 0   0% 4 0   0%
utilities/paginator.py get_paginate_count._max_allowed   0% 3 3 0   0% 2 0   0%
utilities/paginator.py (no function)   100% 11 0 0   100% 0 0   100%
utilities/password_validation.py AlphanumericPasswordValidator.validate   50% 6 3 0   33% 6 2   42%
utilities/password_validation.py AlphanumericPasswordValidator.get_help_text   0% 1 1 0   100% 0 0   0%
utilities/password_validation.py (no function)   100% 5 0 0   100% 0 0   100%
utilities/permissions.py ModelAction.__post_init__   50% 4 2 0   50% 4 2   50%
utilities/permissions.py ModelAction.__hash__   100% 1 0 0   100% 0 0   100%
utilities/permissions.py ModelAction.__eq__   0% 3 3 0   0% 2 0   0%
utilities/permissions.py register_model_actions   80% 5 1 0   75% 4 1   78%
utilities/permissions.py get_permission_for_model   100% 2 0 0   100% 0 0   100%
utilities/permissions.py resolve_permission   67% 6 2 0   100% 0 0   67%
utilities/permissions.py resolve_permission_type   0% 7 7 0   100% 0 0   0%
utilities/permissions.py permission_is_exempt   80% 5 1 0   50% 4 2   67%
utilities/permissions.py qs_filter_from_constraints   0% 13 13 0   0% 10 0   0%
utilities/permissions.py qs_filter_from_constraints._replace_tokens   0% 3 3 0   0% 2 0   0%
utilities/permissions.py (no function)   100% 20 0 0   100% 0 0   100%
utilities/prefetch.py get_prefetchable_fields   0% 11 11 0   0% 10 0   0%
utilities/prefetch.py (no function)   100% 6 0 0   100% 0 0   100%
utilities/proxy.py DefaultProxyRouter._get_protocol_from_url   0% 1 1 0   100% 0 0   0%
utilities/proxy.py DefaultProxyRouter.route   0% 5 5 0   0% 4 0   0%
utilities/proxy.py resolve_proxies   0% 6 6 0   0% 4 0   0%
utilities/proxy.py (no function)   100% 9 0 0   100% 0 0   100%
utilities/query.py count_related   100% 2 0 0   100% 0 0   100%
utilities/query.py dict_to_filter_params   100% 7 0 0   100% 4 0   100%
utilities/query.py _is_mptt_model   100% 2 0 0   100% 0 0   100%
utilities/query.py reapply_model_ordering   89% 9 1 0   83% 6 1   87%
utilities/query.py (no function)   100% 7 0 0   100% 0 0   100%
utilities/query_functions.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/querydict.py dict_to_querydict   0% 7 7 0   0% 4 0   0%
utilities/querydict.py normalize_querydict   0% 1 1 0   100% 0 0   0%
utilities/querydict.py prepare_cloned_fields   0% 11 11 0   0% 8 0   0%
utilities/querydict.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/querysets.py chunked_update   77% 26 6 0   43% 14 6   65%
utilities/querysets.py RestrictedPrefetch.__init__   0% 3 3 0   100% 0 0   0%
utilities/querysets.py RestrictedPrefetch.get_current_querysets   0% 4 4 0   0% 2 0   0%
utilities/querysets.py RestrictedQuerySet.restrict   27% 11 8 0   17% 6 1   24%
utilities/querysets.py (no function)   100% 13 0 0   100% 0 0   100%
utilities/relations.py get_related_models   0% 4 4 0   0% 2 0   0%
utilities/relations.py (no function)   100% 3 0 0   100% 0 0   100%
utilities/release.py _find_release_base_path   30% 10 7 0   17% 6 1   25%
utilities/release.py ReleaseInfo.full_version   83% 6 1 0   50% 4 2   70%
utilities/release.py ReleaseInfo.name   100% 1 0 0   100% 0 0   100%
utilities/release.py ReleaseInfo.asdict   0% 1 1 0   100% 0 0   0%
utilities/release.py load_release_data   80% 15 3 0   50% 6 3   71%
utilities/release.py (no function)   100% 26 0 0   100% 0 0   100%
utilities/request.py NetBoxFakeRequest.__init__   0% 1 1 0   100% 0 0   0%
utilities/request.py copy_safe_request   0% 13 13 0   0% 10 0   0%
utilities/request.py get_safe_request_context   0% 3 3 0   0% 2 0   0%
utilities/request.py get_client_ip   46% 13 7 0   75% 4 1   53%
utilities/request.py safe_for_redirect   0% 1 1 0   100% 0 0   0%
utilities/request.py apply_request_processors   71% 7 2 0   100% 2 0   78%
utilities/request.py (no function)   100% 19 0 0   100% 0 0   100%
utilities/rqworker.py NetBoxRQWorker.heartbeat   0% 9 9 0   0% 4 0   0%
utilities/rqworker.py get_queue_for_model   100% 1 0 0   100% 0 0   100%
utilities/rqworker.py _is_live_worker   0% 1 1 0   100% 0 0   0%
utilities/rqworker.py get_workers_for_queue   0% 2 2 0   100% 0 0   0%
utilities/rqworker.py get_all_workers   100% 2 0 0   100% 0 0   100%
utilities/rqworker.py any_workers_for_queue   38% 8 5 0   17% 6 1   29%
utilities/rqworker.py get_rq_retry   0% 5 5 0   0% 2 0   0%
utilities/rqworker.py (no function)   100% 17 0 0   100% 0 0   100%
utilities/secret_key.py generate_secret_key   0% 1 1 0   100% 0 0   0%
utilities/secret_key.py (no function)   0% 5 5 0   100% 0 0   0%
utilities/security.py validate_peppers   55% 11 5 0   58% 12 5   57%
utilities/security.py (no function)   100% 3 0 0   100% 0 0   100%
utilities/serialization.py serialize_object   93% 14 1 0   90% 10 1   92%
utilities/serialization.py deserialize_object   0% 16 16 0   0% 6 0   0%
utilities/serialization.py (no function)   100% 8 0 0   100% 0 0   100%
utilities/serializers/json.py Serializer._value_from_field   100% 5 0 0   100% 4 0   100%
utilities/serializers/json.py (no function)   100% 7 0 0   100% 0 0   100%
utilities/socks.py ProxyHTTPConnection.__init__   0% 3 3 0   100% 0 0   0%
utilities/socks.py ProxyHTTPConnection._new_conn   0% 7 7 0   100% 0 0   0%
utilities/socks.py ProxyPoolManager.__init__   0% 9 9 0   0% 4 0   0%
utilities/socks.py (no function)   100% 26 0 0   100% 0 0   100%
utilities/string.py humanize_duration   0% 24 24 0   0% 16 0   0%
utilities/string.py enum_key   100% 2 0 0   100% 0 0   100%
utilities/string.py remove_linebreaks   0% 1 1 0   100% 0 0   0%
utilities/string.py title   100% 1 0 0   100% 0 0   100%
utilities/string.py trailing_slash   100% 1 0 0   100% 0 0   100%
utilities/string.py (no function)   100% 7 0 0   100% 0 0   100%
utilities/tables.py get_table_configs   0% 2 2 0   100% 0 0   0%
utilities/tables.py get_table_for_model   0% 5 5 0   100% 0 0   0%
utilities/tables.py get_table_ordering   0% 6 6 0   0% 6 0   0%
utilities/tables.py linkify_phone   0% 3 3 0   0% 2 0   0%
utilities/tables.py register_table_column   0% 5 5 0   0% 4 0   0%
utilities/tables.py (no function)   100% 12 0 0   100% 0 0   100%
utilities/templatetags/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
utilities/templatetags/builtins/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
utilities/templatetags/builtins/filters.py linkify   0% 8 8 0   0% 2 0   0%
utilities/templatetags/builtins/filters.py bettertitle   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py fgcolor   0% 4 4 0   0% 2 0   0%
utilities/templatetags/builtins/filters.py getattr_   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py meta   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py placeholder   0% 3 3 0   0% 2 0   0%
utilities/templatetags/builtins/filters.py split   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py tzoffset   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py content_type   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py content_type_id   0% 4 4 0   0% 2 0   0%
utilities/templatetags/builtins/filters.py render_markdown   0% 8 8 0   0% 4 0   0%
utilities/templatetags/builtins/filters.py render_json   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py render_yaml   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/filters.py isodate   0% 8 8 0   0% 4 0   0%
utilities/templatetags/builtins/filters.py isotime   0% 6 6 0   0% 4 0   0%
utilities/templatetags/builtins/filters.py isodatetime   0% 4 4 0   0% 2 0   0%
utilities/templatetags/builtins/filters.py truncate_middle   0% 6 6 0   0% 2 0   0%
utilities/templatetags/builtins/filters.py (no function)   100% 52 0 0   100% 0 0   100%
utilities/templatetags/builtins/tags.py tag   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py customfield_value   0% 15 15 0   0% 10 0   0%
utilities/templatetags/builtins/tags.py badge   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py checkmark   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py copy_content   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py htmx_table   0% 3 3 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py formaction   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py static_with_params   79% 14 3 0   67% 6 2   75%
utilities/templatetags/builtins/tags.py render   0% 1 1 0   100% 0 0   0%
utilities/templatetags/builtins/tags.py render_breadcrumbs   0% 10 10 0   0% 4 0   0%
utilities/templatetags/builtins/tags.py (no function)   100% 31 0 0   100% 0 0   100%
utilities/templatetags/buttons.py action_buttons   0% 2 2 0   100% 0 0   0%
utilities/templatetags/buttons.py bookmark_button   0% 8 8 0   0% 2 0   0%
utilities/templatetags/buttons.py subscribe_button   0% 10 10 0   0% 4 0   0%
utilities/templatetags/buttons.py clone_button   0% 6 6 0   100% 0 0   0%
utilities/templatetags/buttons.py edit_button   0% 2 2 0   100% 0 0   0%
utilities/templatetags/buttons.py delete_button   0% 2 2 0   100% 0 0   0%
utilities/templatetags/buttons.py sync_button   0% 2 2 0   100% 0 0   0%
utilities/templatetags/buttons.py add_button   0% 5 5 0   100% 0 0   0%
utilities/templatetags/buttons.py import_button   0% 5 5 0   100% 0 0   0%
utilities/templatetags/buttons.py export_button   0% 5 5 0   100% 0 0   0%
utilities/templatetags/buttons.py bulk_edit_button   0% 7 7 0   0% 2 0   0%
utilities/templatetags/buttons.py bulk_delete_button   0% 7 7 0   0% 2 0   0%
utilities/templatetags/buttons.py (no function)   100% 36 0 0   100% 0 0   100%
utilities/templatetags/form_helpers.py getfield   0% 4 4 0   100% 0 0   0%
utilities/templatetags/form_helpers.py any_required   0% 1 1 0   100% 0 0   0%
utilities/templatetags/form_helpers.py widget_type   0% 5 5 0   0% 4 0   0%
utilities/templatetags/form_helpers.py render_field_with_aria   0% 25 25 0   0% 20 0   0%
utilities/templatetags/form_helpers.py render_fieldset   0% 30 30 0   0% 26 0   0%
utilities/templatetags/form_helpers.py render_field   0% 1 1 0   100% 0 0   0%
utilities/templatetags/form_helpers.py render_custom_fields   0% 1 1 0   100% 0 0   0%
utilities/templatetags/form_helpers.py render_form   0% 1 1 0   100% 0 0   0%
utilities/templatetags/form_helpers.py render_errors   0% 1 1 0   100% 0 0   0%
utilities/templatetags/form_helpers.py (no function)   100% 29 0 0   100% 0 0   100%
utilities/templatetags/helpers.py viewname   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py validated_viewname   0% 6 6 0   100% 0 0   0%
utilities/templatetags/helpers.py ActionURLNode.__init__   0% 4 4 0   100% 0 0   0%
utilities/templatetags/helpers.py ActionURLNode.__repr__   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py ActionURLNode.render   0% 12 12 0   0% 4 0   0%
utilities/templatetags/helpers.py action_url   0% 17 17 0   0% 8 0   0%
utilities/templatetags/helpers.py _format_speed   0% 6 6 0   0% 2 0   0%
utilities/templatetags/helpers.py humanize_speed   0% 10 10 0   0% 8 0   0%
utilities/templatetags/helpers.py _humanize_capacity   0% 15 15 0   0% 10 0   0%
utilities/templatetags/helpers.py humanize_disk_capacity   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py humanize_ram_capacity   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py divide   0% 3 3 0   0% 2 0   0%
utilities/templatetags/helpers.py percentage   0% 3 3 0   0% 2 0   0%
utilities/templatetags/helpers.py as_range   0% 5 5 0   100% 0 0   0%
utilities/templatetags/helpers.py meters_to_feet   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py kg_to_pounds   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py display_weight   0% 5 5 0   0% 2 0   0%
utilities/templatetags/helpers.py display_distance   0% 5 5 0   0% 2 0   0%
utilities/templatetags/helpers.py display_diameter   0% 5 5 0   0% 2 0   0%
utilities/templatetags/helpers.py display_flow_rate   0% 5 5 0   0% 2 0   0%
utilities/templatetags/helpers.py startswith   0% 3 3 0   0% 2 0   0%
utilities/templatetags/helpers.py get_key   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py get_item   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py status_from_tag   0% 2 2 0   100% 0 0   0%
utilities/templatetags/helpers.py icon_from_status   0% 2 2 0   100% 0 0   0%
utilities/templatetags/helpers.py utilization_graph   0% 10 10 0   0% 8 0   0%
utilities/templatetags/helpers.py table_config_form   0% 1 1 0   100% 0 0   0%
utilities/templatetags/helpers.py applied_filters   0% 63 63 0   0% 44 0   0%
utilities/templatetags/helpers.py (no function)   100% 68 0 0   100% 0 0   100%
utilities/templatetags/navigation.py nav   75% 20 5 0   75% 16 4   75%
utilities/templatetags/navigation.py (no function)   100% 6 0 0   100% 0 0   100%
utilities/templatetags/perms.py _check_permission   0% 2 2 0   100% 0 0   0%
utilities/templatetags/perms.py can_view   0% 1 1 0   100% 0 0   0%
utilities/templatetags/perms.py can_add   0% 2 2 0   100% 0 0   0%
utilities/templatetags/perms.py can_change   0% 1 1 0   100% 0 0   0%
utilities/templatetags/perms.py can_delete   0% 1 1 0   100% 0 0   0%
utilities/templatetags/perms.py can_sync   0% 1 1 0   100% 0 0   0%
utilities/templatetags/perms.py can_run   0% 1 1 0   100% 0 0   0%
utilities/templatetags/perms.py (no function)   100% 17 0 0   100% 0 0   100%
utilities/templatetags/plugins.py _get_registered_content   33% 18 12 0   33% 6 2   33%
utilities/templatetags/plugins.py plugin_head   100% 1 0 0   100% 0 0   100%
utilities/templatetags/plugins.py plugin_navbar   100% 1 0 0   100% 0 0   100%
utilities/templatetags/plugins.py plugin_list_buttons   0% 1 1 0   100% 0 0   0%
utilities/templatetags/plugins.py plugin_buttons   0% 1 1 0   100% 0 0   0%
utilities/templatetags/plugins.py plugin_alerts   0% 1 1 0   100% 0 0   0%
utilities/templatetags/plugins.py plugin_left_page   0% 1 1 0   100% 0 0   0%
utilities/templatetags/plugins.py plugin_right_page   0% 1 1 0   100% 0 0   0%
utilities/templatetags/plugins.py plugin_full_width_page   0% 1 1 0   100% 0 0   0%
utilities/templatetags/plugins.py (no function)   100% 24 0 0   100% 0 0   100%
utilities/templatetags/tabs.py model_view_tabs   0% 22 22 0   0% 8 0   0%
utilities/templatetags/tabs.py (no function)   100% 9 0 0   100% 0 0   100%
utilities/testing/__init__.py (no function)   0% 7 7 0   100% 0 0   0%
utilities/testing/api.py APITestCase.setUp   0% 4 4 0   100% 0 0   0%
utilities/testing/api.py APITestCase._get_view_namespace   0% 1 1 0   100% 0 0   0%
utilities/testing/api.py APITestCase._get_detail_url   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APITestCase._get_list_url   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GetObjectViewTestCase.test_get_object_anonymous   0% 6 6 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GetObjectViewTestCase.test_get_object_without_permission   0% 3 3 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GetObjectViewTestCase.test_get_object   0% 13 13 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GetObjectViewTestCase.test_options_object   0% 3 3 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.ListObjectsViewTestCase.test_list_objects_anonymous   0% 7 7 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.ListObjectsViewTestCase.test_list_objects_brief   0% 6 6 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.ListObjectsViewTestCase.test_list_objects_without_permission   0% 3 3 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.ListObjectsViewTestCase.test_list_objects   0% 10 10 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.ListObjectsViewTestCase.test_options_objects   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.CreateObjectViewTestCase.test_create_object_without_permission   0% 4 4 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.CreateObjectViewTestCase.test_create_object   0% 16 16 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.CreateObjectViewTestCase.test_bulk_create_objects   0% 27 27 0   0% 18 0   0%
utilities/testing/api.py APIViewTestCases.CreateObjectViewTestCase.test_bulk_create_objects_invalid_item   0% 12 12 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_update_object_without_permission   0% 5 5 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_update_object   0% 17 17 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_update_object_with_etag   0% 18 18 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_bulk_update_objects   0% 27 27 0   0% 18 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_bulk_update_objects_string_id   0% 13 13 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_bulk_update_objects_validation_error   0% 22 22 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_bulk_update_objects_nonexistent_id   0% 24 24 0   0% 8 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_bulk_update_objects_malformed_entry   0% 19 19 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.UpdateObjectViewTestCase.test_bulk_update_objects_duplicate_id   0% 23 23 0   0% 8 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_delete_object_without_permission   0% 4 4 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_delete_object   0% 15 15 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_bulk_delete_objects   0% 20 20 0   0% 8 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_bulk_delete_objects_nonexistent_id   0% 17 17 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_bulk_delete_objects_malformed_entry   0% 14 14 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_bulk_delete_objects_duplicate_id   0% 16 16 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.DeleteObjectViewTestCase.test_bulk_delete_objects_no_body   0% 11 11 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase.get_graphql_type_class   0% 6 6 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._get_graphql_base_name   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._build_query_with_filter   0% 25 25 0   0% 20 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._graphql_literal   0% 14 14 0   0% 12 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._render_graphql_filter_value   0% 9 9 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._build_graphql_filter_string   0% 4 4 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._build_filtered_query   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._build_graphql_id_list_query   0% 3 3 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._graphql_type_exposes_id   0% 5 5 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._get_model_graphql_filter_class   0% 10 10 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._get_graphql_filter_field_names   0% 4 4 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._collect_filter_class_annotation_names   0% 4 4 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._assert_graphql_filter_class_present   0% 11 11 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._get_nonempty_field_value   0% 6 6 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._get_model_field_for_filter_field   0% 4 4 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._iter_filter_class_annotations   0% 4 4 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._unwrap_filter_annotation   0% 36 36 0   0% 20 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._classify_filter_annotation   0% 33 33 0   0% 28 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_id_filter_tests   0% 14 14 0   0% 8 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_str_lookup_filter_tests   0% 11 11 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_filter_lookup_filter_tests   0% 10 10 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_comparison_lookup_filter_tests   0% 7 7 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_numeric_filter_tests   0% 11 11 0   0% 8 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_date_lookup_filter_tests   0% 8 8 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_range_lookup_filter_tests   0% 8 8 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_array_lookup_filter_tests   0% 11 11 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._emit_range_array_lookup_filter_tests   0% 12 12 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._iter_auto_graphql_filter_tests   0% 28 28 0   0% 20 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._iter_legacy_graphql_filter_tests   0% 4 4 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._coerce_graphql_filter_test   0% 6 6 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._iter_explicit_graphql_filter_tests   0% 2 2 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._get_expected_id_set   0% 9 9 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._assert_graphql_filter_test   0% 17 17 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._coerce_graphql_query_test   0% 6 6 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._build_query   0% 5 5 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase.test_graphql_get_object   0% 26 26 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase.test_graphql_list_objects   0% 24 24 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase._assert_graphql_filter_tests_exist   0% 2 2 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase.test_graphql_filter_objects   0% 18 18 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLTestCase.test_graphql_extra_queries   0% 17 17 0   0% 6 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.get_graphql_schema   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.iter_test_module_names   0% 5 5 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.import_graphql_test_modules   0% 2 2 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.import_graphql_test_module   0% 6 6 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.unwrap_graphql_type   0% 3 3 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.get_schema_field_type_class   0% 6 6 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.get_graphql_type_model   0% 2 2 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.get_schema_type_classes   0% 14 14 0   0% 8 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.iter_graphql_testcase_classes   0% 4 4 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.get_testcase_type_class   0% 8 8 0   0% 2 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.get_testcase_type_classes   0% 7 7 0   0% 4 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.format_type_class   0% 3 3 0   100% 0 0   0%
utilities/testing/api.py APIViewTestCases.GraphQLSchemaCoverageTestCase.test_schema_types_have_graphql_test_coverage   0% 6 6 0   100% 0 0   0%
utilities/testing/api.py (no function)   0% 176 176 0   100% 0 0   0%
utilities/testing/base.py TestCase.setUp   0% 4 4 0   100% 0 0   0%
utilities/testing/base.py TestCase.cleanupSubTest   0% 5 5 0   100% 0 0   0%
utilities/testing/base.py TestCase.add_permissions   0% 6 6 0   0% 2 0   0%
utilities/testing/base.py TestCase.remove_permissions   0% 3 3 0   0% 2 0   0%
utilities/testing/base.py TestCase.assertObjectChange   0% 13 13 0   0% 8 0   0%
utilities/testing/base.py TestCase.assertHttpStatus   0% 8 8 0   0% 4 0   0%
utilities/testing/base.py TestCase.assertNotCacheable   0% 2 2 0   100% 0 0   0%
utilities/testing/base.py ModelTestCase._get_queryset   0% 1 1 0   100% 0 0   0%
utilities/testing/base.py ModelTestCase.prepare_instance   0% 1 1 0   100% 0 0   0%
utilities/testing/base.py ModelTestCase.model_to_dict   0% 38 38 0   0% 34 0   0%
utilities/testing/base.py ModelTestCase.assertInstanceEqual   0% 8 8 0   0% 4 0   0%
utilities/testing/base.py (no function)   0% 37 37 0   100% 0 0   0%
utilities/testing/filtersets.py BaseFilterSetTestMixin.get_m2m_filter_name   0% 2 2 0   100% 0 0   0%
utilities/testing/filtersets.py BaseFilterSetTestMixin.get_filters_for_model_field   0% 17 17 0   0% 12 0   0%
utilities/testing/filtersets.py BaseFilterSetTestMixin.test_id   0% 3 3 0   100% 0 0   0%
utilities/testing/filtersets.py BaseFilterSetTestMixin.test_missing_filters   0% 22 22 0   0% 16 0   0%
utilities/testing/filtersets.py ChangeLoggedFilterSetTestMixin.test_created   0% 4 4 0   100% 0 0   0%
utilities/testing/filtersets.py ChangeLoggedFilterSetTestMixin.test_last_updated   0% 4 4 0   100% 0 0   0%
utilities/testing/filtersets.py (no function)   0% 25 25 0   100% 0 0   0%
utilities/testing/mixins.py RQQueueTestMixin.clear_rq_queues   0% 2 2 0   0% 2 0   0%
utilities/testing/mixins.py RQQueueTestMixin.run_rq_jobs   0% 2 2 0   100% 0 0   0%
utilities/testing/mixins.py RQQueueTestMixin.setUp   0% 2 2 0   100% 0 0   0%
utilities/testing/mixins.py RQQueueTestMixin.tearDown   0% 3 3 0   100% 0 0   0%
utilities/testing/mixins.py (no function)   0% 13 13 0   100% 0 0   0%
utilities/testing/query_counts.py _is_update_mode   0% 1 1 0   100% 0 0   0%
utilities/testing/query_counts.py _is_parallel_test_run   0% 4 4 0   0% 4 0   0%
utilities/testing/query_counts.py _baseline_path   0% 2 2 0   100% 0 0   0%
utilities/testing/query_counts.py _load_baseline   0% 10 10 0   0% 4 0   0%
utilities/testing/query_counts.py _record_update   0% 14 14 0   0% 2 0   0%
utilities/testing/query_counts.py assert_expected_query_count   0% 24 24 0   0% 8 0   0%
utilities/testing/query_counts.py (no function)   0% 25 25 0   100% 0 0   0%
utilities/testing/tables.py ModelTableTestCase.validate_table_test_case   0% 4 4 0   0% 4 0   0%
utilities/testing/tables.py ModelTableTestCase.get_request   0% 3 3 0   100% 0 0   0%
utilities/testing/tables.py ModelTableTestCase.get_table   0% 1 1 0   100% 0 0   0%
utilities/testing/tables.py ModelTableTestCase.is_queryset_source_view   0% 3 3 0   100% 0 0   0%
utilities/testing/tables.py ModelTableTestCase.get_queryset_sources   0% 16 16 0   0% 10 0   0%
utilities/testing/tables.py ModelTableTestCase.iter_orderable_columns   0% 6 6 0   0% 6 0   0%
utilities/testing/tables.py TableTestCases.StandardTableTestCase.setUpClass   0% 2 2 0   100% 0 0   0%
utilities/testing/tables.py TableTestCases.StandardTableTestCase.test_every_orderable_column_renders   0% 8 8 0   0% 6 0   0%
utilities/testing/tables.py (no function)   0% 25 25 0   100% 0 0   0%
utilities/testing/utils.py post_data   0% 12 12 0   0% 10 0   0%
utilities/testing/utils.py create_test_device   0% 7 7 0   0% 2 0   0%
utilities/testing/utils.py create_test_virtualmachine   0% 4 4 0   100% 0 0   0%
utilities/testing/utils.py create_test_nat_ip_pair   0% 9 9 0   0% 4 0   0%
utilities/testing/utils.py create_test_user   0% 8 8 0   0% 4 0   0%
utilities/testing/utils.py create_tags   0% 3 3 0   100% 0 0   0%
utilities/testing/utils.py extract_form_failures   0% 2 2 0   100% 0 0   0%
utilities/testing/utils.py disable_warnings   0% 5 5 0   100% 0 0   0%
utilities/testing/utils.py disable_logging   0% 5 5 0   100% 0 0   0%
utilities/testing/utils.py add_custom_field_data   0% 6 6 0   0% 2 0   0%
utilities/testing/utils.py get_random_string   0% 2 2 0   100% 0 0   0%
utilities/testing/utils.py PinnedConnectionRouter.__init__   0% 1 1 0   100% 0 0   0%
utilities/testing/utils.py PinnedConnectionRouter._check   0% 2 2 0   0% 2 0   0%
utilities/testing/utils.py (no function)   0% 35 35 0   100% 0 0   0%
utilities/testing/views.py ModelViewTestCase._get_base_url   0% 1 1 0   100% 0 0   0%
utilities/testing/views.py ModelViewTestCase._get_url   0% 4 4 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.GetObjectViewTestCase.test_get_object_anonymous   0% 8 8 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.GetObjectViewTestCase.test_get_object_without_permission   0% 3 3 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.GetObjectViewTestCase.test_get_object_with_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.GetObjectViewTestCase.test_get_object_with_constrained_permission   0% 7 7 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.GetObjectChangelogViewTestCase.test_get_object_changelog   0% 3 3 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.CreateObjectViewTestCase.test_create_object_without_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.CreateObjectViewTestCase.test_create_object_with_permission   0% 20 20 0   0% 8 0   0%
utilities/testing/views.py ViewTestCases.CreateObjectViewTestCase.test_create_object_with_constrained_permission   0% 16 16 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.EditObjectViewTestCase.test_edit_object_without_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.EditObjectViewTestCase.test_edit_object_with_permission   0% 19 19 0   0% 8 0   0%
utilities/testing/views.py ViewTestCases.EditObjectViewTestCase.test_edit_object_with_constrained_permission   0% 13 13 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.DeleteObjectViewTestCase.test_delete_object_without_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.DeleteObjectViewTestCase.test_delete_object_with_permission   0% 17 17 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.DeleteObjectViewTestCase.test_delete_object_with_constrained_permission   0% 14 14 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.ListObjectsViewTestCase.test_list_objects_anonymous   0% 8 8 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.ListObjectsViewTestCase.test_list_objects_without_permission   0% 2 2 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.ListObjectsViewTestCase.test_list_objects_with_permission   0% 7 7 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.ListObjectsViewTestCase.test_list_objects_with_constrained_permission   0% 10 10 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.ListObjectsViewTestCase.test_export_objects   0% 11 11 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.ListObjectsViewTestCase.test_export_objects_anonymous   0% 13 13 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.CreateMultipleObjectsViewTestCase.test_create_multiple_objects_without_permission   0% 3 3 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.CreateMultipleObjectsViewTestCase.test_create_multiple_objects_with_permission   0% 11 11 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.CreateMultipleObjectsViewTestCase.test_create_multiple_objects_with_constrained_permission   0% 15 15 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.CreateMultipleObjectsViewTestCase.test_create_multiple_objects_addanother   0% 15 15 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase.get_scenarios   0% 1 1 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase._get_csv_data   0% 8 8 0   0% 6 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase._get_update_csv_data   0% 1 1 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase.test_bulk_import_objects_without_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase.test_bulk_import_objects_with_permission   0% 10 10 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase._test_bulk_import_with_permission_scenario   0% 16 16 0   0% 6 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase.test_bulk_update_objects_without_change_permission   0% 24 24 0   0% 10 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase.test_bulk_update_objects_with_permission   0% 25 25 0   0% 12 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase.test_bulk_import_objects_with_constrained_permission   0% 9 9 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.BulkImportObjectsViewTestCase._test_bulk_import_constrained_scenario   0% 10 10 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkEditObjectsViewTestCase.test_bulk_edit_objects_without_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkEditObjectsViewTestCase.test_bulk_edit_objects_with_permission   0% 20 20 0   0% 8 0   0%
utilities/testing/views.py ViewTestCases.BulkEditObjectsViewTestCase.test_bulk_edit_objects_with_constrained_permission   0% 17 17 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.BulkDeleteObjectsViewTestCase.test_bulk_delete_objects_without_permission   0% 6 6 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkDeleteObjectsViewTestCase.test_bulk_delete_objects_with_permission   0% 16 16 0   0% 6 0   0%
utilities/testing/views.py ViewTestCases.BulkDeleteObjectsViewTestCase.test_bulk_delete_objects_with_constrained_permission   0% 13 13 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkRenameObjectsViewTestCase.test_bulk_rename_objects_without_permission   0% 7 7 0   100% 0 0   0%
utilities/testing/views.py ViewTestCases.BulkRenameObjectsViewTestCase.test_bulk_rename_objects_with_permission   0% 11 11 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.BulkRenameObjectsViewTestCase.test_bulk_rename_objects_with_changelog_message   0% 16 16 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.BulkRenameObjectsViewTestCase.test_bulk_rename_objects_with_constrained_permission   0% 15 15 0   0% 2 0   0%
utilities/testing/views.py ViewTestCases.BulkRenameObjectsViewTestCase.test_bulk_rename_label_field   0% 15 15 0   0% 4 0   0%
utilities/testing/views.py ViewTestCases.BulkRenameObjectsViewTestCase.test_bulk_rename_name_and_label_fields   0% 16 16 0   0% 4 0   0%
utilities/testing/views.py (no function)   0% 119 119 0   100% 0 0   0%
utilities/tracking.py Tracker.__init__   100% 1 0 0   100% 0 0   100%
utilities/tracking.py Tracker.__contains__   100% 1 0 0   100% 0 0   100%
utilities/tracking.py Tracker.set   0% 1 1 0   100% 0 0   0%
utilities/tracking.py Tracker.get   0% 1 1 0   100% 0 0   0%
utilities/tracking.py Tracker.clear   67% 3 1 0   50% 2 1   60%
utilities/tracking.py TrackingModelMixin.__init__   100% 2 0 0   100% 0 0   100%
utilities/tracking.py TrackingModelMixin.tracker   100% 3 0 0   100% 2 0   100%
utilities/tracking.py TrackingModelMixin.save   100% 3 0 0   100% 0 0   100%
utilities/tracking.py TrackingModelMixin.__setattr__   64% 11 4 0   58% 12 3   61%
utilities/tracking.py (no function)   100% 14 0 0   100% 0 0   100%
utilities/urls.py get_model_urls   87% 15 2 0   83% 6 1   86%
utilities/urls.py (no function)   100% 6 0 0   100% 0 0   100%
utilities/validators.py EnhancedURLValidator.__call__   0% 3 3 0   0% 2 0   0%
utilities/validators.py ExclusionValidator.compare   100% 1 0 0   100% 0 0   100%
utilities/validators.py MultipleOfValidator.__init__   0% 2 2 0   100% 0 0   0%
utilities/validators.py MultipleOfValidator.__call__   0% 2 2 0   0% 2 0   0%
utilities/validators.py url_scheme_is_allowed   0% 5 5 0   100% 0 0   0%
utilities/validators.py validate_regex   0% 4 4 0   100% 0 0   0%
utilities/validators.py (no function)   100% 23 0 0   100% 0 0   100%
utilities/views.py ConditionalLoginRequiredMixin.dispatch   67% 3 1 0   50% 2 1   60%
utilities/views.py TokenConditionalLoginRequiredMixin.dispatch   0% 9 9 0   0% 4 0   0%
utilities/views.py ContentTypePermissionRequiredMixin.get_required_permission   0% 1 1 0   100% 0 0   0%
utilities/views.py ContentTypePermissionRequiredMixin.has_permission   0% 5 5 0   0% 2 0   0%
utilities/views.py ContentTypePermissionRequiredMixin.dispatch   0% 3 3 0   0% 2 0   0%
utilities/views.py ObjectPermissionRequiredMixin.get_required_permission   0% 1 1 0   100% 0 0   0%
utilities/views.py ObjectPermissionRequiredMixin.has_permission   0% 7 7 0   0% 2 0   0%
utilities/views.py ObjectPermissionRequiredMixin.dispatch   0% 5 5 0   0% 4 0   0%
utilities/views.py GetReturnURLMixin.get_return_url   0% 13 13 0   0% 8 0   0%
utilities/views.py GetRelatedModelsMixin.RelatedObjectCount.name   0% 1 1 0   100% 0 0   0%
utilities/views.py GetRelatedModelsMixin.get_related_models   0% 7 7 0   0% 2 0   0%
utilities/views.py ViewTab.__init__   100% 6 0 0   100% 0 0   100%
utilities/views.py ViewTab.render   0% 6 6 0   0% 4 0   0%
utilities/views.py ViewTab._get_badge_value   0% 5 5 0   0% 4 0   0%
utilities/views.py get_viewname   87% 15 2 0   70% 10 3   80%
utilities/views.py get_action_url   67% 3 1 0   50% 2 1   60%
utilities/views.py get_default_template   0% 6 6 0   100% 0 0   0%
utilities/views.py register_model_view   100% 2 0 0   100% 0 0   100%
utilities/views.py register_model_view._wrapper   100% 6 0 0   100% 2 0   100%
utilities/views.py get_view   0% 4 4 0   100% 0 0   0%
utilities/views.py (no function)   100% 54 0 0   100% 0 0   100%
virtualization/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
virtualization/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
virtualization/api/serializers.py (no function)   100% 2 0 0   100% 0 0   100%
virtualization/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
virtualization/api/serializers_/clusters.py (no function)   100% 39 0 0   100% 0 0   100%
virtualization/api/serializers_/nested.py (no function)   100% 12 0 0   100% 0 0   100%
virtualization/api/serializers_/virtualmachines.py VirtualMachineSerializer.get_config_context   0% 1 1 0   100% 0 0   0%
virtualization/api/serializers_/virtualmachines.py VMInterfaceSerializer.validate   0% 25 25 0   0% 16 0   0%
virtualization/api/serializers_/virtualmachines.py (no function)   100% 82 0 0   100% 0 0   100%
virtualization/api/urls.py (no function)   100% 13 0 0   100% 0 0   100%
virtualization/api/views.py VirtualizationRootView.get_view_name   0% 1 1 0   100% 0 0   0%
virtualization/api/views.py VMInterfaceViewSet.get_bulk_destroy_queryset   100% 1 0 0   100% 0 0   100%
virtualization/api/views.py (no function)   100% 39 0 0   100% 0 0   100%
virtualization/apps.py VirtualizationConfig.ready   100% 6 0 0   100% 0 0   100%
virtualization/apps.py (no function)   100% 4 0 0   100% 0 0   100%
virtualization/choices.py (no function)   100% 26 0 0   100% 0 0   100%
virtualization/filtersets.py ClusterFilterSet.search   0% 3 3 0   0% 2 0   0%
virtualization/filtersets.py VirtualMachineTypeFilterSet.search   0% 3 3 0   0% 2 0   0%
virtualization/filtersets.py VirtualMachineFilterSet.search   0% 12 12 0   0% 6 0   0%
virtualization/filtersets.py VirtualMachineFilterSet._has_primary_ip   0% 4 4 0   0% 2 0   0%
virtualization/filtersets.py VMInterfaceFilterSet.search   0% 3 3 0   0% 2 0   0%
virtualization/filtersets.py VirtualDiskFilterSet.search   0% 3 3 0   0% 2 0   0%
virtualization/filtersets.py (no function)   100% 104 0 0   100% 0 0   100%
virtualization/forms/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
virtualization/forms/bulk_create.py VirtualMachineBulkAddComponentForm.clean_tags   0% 1 1 0   100% 0 0   0%
virtualization/forms/bulk_create.py (no function)   100% 15 0 0   100% 0 0   100%
virtualization/forms/bulk_edit.py VirtualMachineTypeBulkEditForm.__init__   0% 2 2 0   100% 0 0   0%
virtualization/forms/bulk_edit.py VirtualMachineBulkEditForm.__init__   0% 4 4 0   100% 0 0   0%
virtualization/forms/bulk_edit.py VMInterfaceBulkEditForm.__init__   0% 25 25 0   0% 12 0   0%
virtualization/forms/bulk_edit.py VirtualDiskBulkEditForm.__init__   0% 2 2 0   100% 0 0   0%
virtualization/forms/bulk_edit.py (no function)   100% 87 0 0   100% 0 0   100%
virtualization/forms/bulk_import.py VMInterfaceImportForm.__init__   0% 11 11 0   0% 6 0   0%
virtualization/forms/bulk_import.py VMInterfaceImportForm.clean_enabled   0% 3 3 0   0% 2 0   0%
virtualization/forms/bulk_import.py (no function)   100% 71 0 0   100% 0 0   100%
virtualization/forms/filtersets.py VirtualMachineTypeFilterForm.__init__   0% 2 2 0   100% 0 0   0%
virtualization/forms/filtersets.py VirtualDiskFilterForm.__init__   0% 2 2 0   100% 0 0   0%
virtualization/forms/filtersets.py (no function)   100% 89 0 0   100% 0 0   100%
virtualization/forms/model_forms.py ClusterAddDevicesForm.__init__   0% 3 3 0   100% 0 0   0%
virtualization/forms/model_forms.py ClusterAddDevicesForm.clean   0% 7 7 0   0% 8 0   0%
virtualization/forms/model_forms.py VirtualMachineTypeForm.__init__   0% 2 2 0   100% 0 0   0%
virtualization/forms/model_forms.py VirtualMachineForm.__init__   0% 22 22 0   0% 10 0   0%
virtualization/forms/model_forms.py VirtualMachineForm._populate_virtual_machine_type_defaults   0% 12 12 0   0% 10 0   0%
virtualization/forms/model_forms.py VMComponentForm.__init__   0% 3 3 0   0% 2 0   0%
virtualization/forms/model_forms.py VirtualDiskForm.__init__   0% 2 2 0   100% 0 0   0%
virtualization/forms/model_forms.py (no function)   100% 103 0 0   100% 0 0   100%
virtualization/forms/object_create.py (no function)   100% 14 0 0   100% 0 0   100%
virtualization/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
virtualization/graphql/enums.py (no function)   100% 6 0 0   100% 0 0   100%
virtualization/graphql/filter_mixins.py (no function)   93% 15 1 0   50% 2 1   88%
virtualization/graphql/filters.py (no function)   94% 85 5 0   50% 2 1   93%
virtualization/graphql/schema.py (no function)   100% 19 0 0   100% 0 0   100%
virtualization/graphql/types.py ClusterType.scope   0% 1 1 0   100% 0 0   0%
virtualization/graphql/types.py (no function)   89% 37 4 0   50% 2 1   87%
virtualization/models/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
virtualization/models/clusters.py Cluster.__str__   0% 1 1 0   100% 0 0   0%
virtualization/models/clusters.py Cluster.get_status_color   0% 1 1 0   100% 0 0   0%
virtualization/models/clusters.py Cluster.clean   0% 16 16 0   0% 16 0   0%
virtualization/models/clusters.py (no function)   100% 41 0 0   100% 0 0   100%
virtualization/models/virtualmachines.py VirtualMachineType.__str__   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py VirtualMachine.__str__   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py VirtualMachine.clean   10% 29 26 0   4% 26 1   7%
virtualization/models/virtualmachines.py VirtualMachine.save   0% 8 8 0   0% 8 0   0%
virtualization/models/virtualmachines.py VirtualMachine.apply_type_defaults   0% 8 8 0   0% 8 0   0%
virtualization/models/virtualmachines.py VirtualMachine.get_status_color   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py VirtualMachine.get_start_on_boot_color   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py VirtualMachine.primary_ip   0% 7 7 0   0% 6 0   0%
virtualization/models/virtualmachines.py ComponentModel.__str__   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py ComponentModel.to_objectchange   0% 3 3 0   100% 0 0   0%
virtualization/models/virtualmachines.py ComponentModel.parent_object   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py VMInterface.clean   0% 11 11 0   0% 10 0   0%
virtualization/models/virtualmachines.py VMInterface.l2vpn_termination   0% 1 1 0   100% 0 0   0%
virtualization/models/virtualmachines.py (no function)   100% 108 0 0   100% 0 0   100%
virtualization/object_actions.py BulkAddComponents.get_context   0% 1 1 0   100% 0 0   0%
virtualization/object_actions.py (no function)   100% 10 0 0   100% 0 0   100%
virtualization/search.py (no function)   100% 37 0 0   100% 0 0   100%
virtualization/signals.py update_virtualmachine_disk   0% 2 2 0   100% 0 0   0%
virtualization/signals.py update_virtualmachine_site   0% 2 2 0   0% 2 0   0%
virtualization/signals.py (no function)   100% 9 0 0   100% 0 0   100%
virtualization/tables/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
virtualization/tables/clusters.py (no function)   100% 36 0 0   100% 0 0   100%
virtualization/tables/template_code.py (no function)   100% 1 0 0   100% 0 0   100%
virtualization/tables/virtualmachines.py VirtualMachineTypeTable.render_default_memory   0% 1 1 0   100% 0 0   0%
virtualization/tables/virtualmachines.py VirtualMachineTable.render_memory   0% 1 1 0   100% 0 0   0%
virtualization/tables/virtualmachines.py VirtualMachineTable.render_disk   0% 1 1 0   100% 0 0   0%
virtualization/tables/virtualmachines.py VirtualDiskTable.render_size   0% 1 1 0   100% 0 0   0%
virtualization/tables/virtualmachines.py (no function)   100% 77 0 0   100% 0 0   100%
virtualization/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
virtualization/ui/panels.py (no function)   100% 56 0 0   100% 0 0   100%
virtualization/urls.py (no function)   100% 5 0 0   100% 0 0   100%
virtualization/views.py ClusterTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
virtualization/views.py ClusterGroupView.get_extra_context   0% 1 1 0   100% 0 0   0%
virtualization/views.py ClusterView.get_extra_context   0% 1 1 0   100% 0 0   0%
virtualization/views.py ClusterVirtualMachinesView.get_children   0% 1 1 0   100% 0 0   0%
virtualization/views.py ClusterDevicesView.get_children   0% 1 1 0   100% 0 0   0%
virtualization/views.py ClusterAddDevicesView.get   0% 3 3 0   100% 0 0   0%
virtualization/views.py ClusterAddDevicesView.post   0% 12 12 0   0% 4 0   0%
virtualization/views.py VirtualMachineTypeView.get_extra_context   0% 1 1 0   100% 0 0   0%
virtualization/views.py VirtualMachineInterfacesView.get_children   0% 1 1 0   100% 0 0   0%
virtualization/views.py VirtualMachineVirtualDisksView.get_children   0% 1 1 0   100% 0 0   0%
virtualization/views.py VMInterfaceView.get_extra_context   0% 8 8 0   0% 2 0   0%
virtualization/views.py VirtualMachineBulkAddInterfaceView.get_required_permission   0% 1 1 0   100% 0 0   0%
virtualization/views.py VirtualMachineBulkAddVirtualDiskView.get_required_permission   0% 1 1 0   100% 0 0   0%
virtualization/views.py (no function)   100% 382 0 0   100% 0 0   100%
vpn/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
vpn/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
vpn/api/serializers.py (no function)   100% 3 0 0   100% 0 0   100%
vpn/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
vpn/api/serializers_/crypto.py (no function)   100% 44 0 0   100% 0 0   100%
vpn/api/serializers_/l2vpn.py (no function)   100% 28 0 0   100% 0 0   100%
vpn/api/serializers_/tunnels.py (no function)   100% 37 0 0   100% 0 0   100%
vpn/api/urls.py (no function)   100% 16 0 0   100% 0 0   100%
vpn/api/views.py VPNRootView.get_view_name   0% 1 1 0   100% 0 0   0%
vpn/api/views.py (no function)   100% 48 0 0   100% 0 0   100%
vpn/apps.py VPNConfig.ready   100% 3 0 0   100% 0 0   100%
vpn/apps.py (no function)   100% 5 0 0   100% 0 0   100%
vpn/choices.py (no function)   100% 111 0 0   100% 0 0   100%
vpn/constants.py (no function)   100% 2 0 0   100% 0 0   100%
vpn/filtersets.py TunnelFilterSet.search   0% 3 3 0   0% 2 0   0%
vpn/filtersets.py IKEProposalFilterSet.search   0% 3 3 0   0% 2 0   0%
vpn/filtersets.py IKEPolicyFilterSet.search   0% 3 3 0   0% 2 0   0%
vpn/filtersets.py IPSecProposalFilterSet.search   0% 3 3 0   0% 2 0   0%
vpn/filtersets.py IPSecPolicyFilterSet.search   0% 3 3 0   0% 2 0   0%
vpn/filtersets.py IPSecProfileFilterSet.search   0% 3 3 0   0% 2 0   0%
vpn/filtersets.py L2VPNFilterSet.search   0% 8 8 0   0% 2 0   0%
vpn/filtersets.py L2VPNTerminationFilterSet.search   0% 4 4 0   0% 2 0   0%
vpn/filtersets.py L2VPNTerminationFilterSet.filter_assigned_object   0% 2 2 0   100% 0 0   0%
vpn/filtersets.py L2VPNTerminationFilterSet.filter_site   0% 2 2 0   100% 0 0   0%
vpn/filtersets.py L2VPNTerminationFilterSet.filter_region   100% 2 0 0   100% 0 0   100%
vpn/filtersets.py (no function)   100% 137 0 0   100% 0 0   100%
vpn/forms/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
vpn/forms/bulk_edit.py (no function)   100% 71 0 0   100% 0 0   100%
vpn/forms/bulk_import.py TunnelTerminationImportForm.__init__   0% 6 6 0   0% 6 0   0%
vpn/forms/bulk_import.py TunnelTerminationImportForm.save   0% 3 3 0   0% 2 0   0%
vpn/forms/bulk_import.py L2VPNTerminationImportForm.__init__   0% 6 6 0   0% 6 0   0%
vpn/forms/bulk_import.py L2VPNTerminationImportForm.clean   0% 9 9 0   0% 8 0   0%
vpn/forms/bulk_import.py (no function)   100% 88 0 0   100% 0 0   100%
vpn/forms/filtersets.py (no function)   100% 87 0 0   100% 0 0   100%
vpn/forms/model_forms.py TunnelCreateForm.__init__   0% 13 13 0   0% 4 0   0%
vpn/forms/model_forms.py TunnelCreateForm.clean   0% 8 8 0   0% 8 0   0%
vpn/forms/model_forms.py TunnelCreateForm.save   0% 6 6 0   0% 4 0   0%
vpn/forms/model_forms.py TunnelTerminationForm.__init__   0% 13 13 0   0% 6 0   0%
vpn/forms/model_forms.py TunnelTerminationForm.clean   0% 2 2 0   100% 0 0   0%
vpn/forms/model_forms.py L2VPNTerminationForm.__init__   0% 11 11 0   0% 8 0   0%
vpn/forms/model_forms.py L2VPNTerminationForm.clean   0% 9 9 0   0% 4 0   0%
vpn/forms/model_forms.py (no function)   100% 114 0 0   100% 0 0   100%
vpn/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
vpn/graphql/enums.py (no function)   100% 16 0 0   100% 0 0   100%
vpn/graphql/filters.py (no function)   96% 91 4 0   50% 2 1   95%
vpn/graphql/schema.py (no function)   100% 25 0 0   100% 0 0   100%
vpn/graphql/types.py L2VPNTerminationType.assigned_object   0% 1 1 0   100% 0 0   0%
vpn/graphql/types.py (no function)   88% 40 5 0   50% 2 1   86%
vpn/models/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
vpn/models/crypto.py IKEProposal.__str__   0% 1 1 0   100% 0 0   0%
vpn/models/crypto.py IKEPolicy.__str__   0% 1 1 0   100% 0 0   0%
vpn/models/crypto.py IKEPolicy.clean   0% 5 5 0   0% 4 0   0%
vpn/models/crypto.py IPSecProposal.__str__   0% 1 1 0   100% 0 0   0%
vpn/models/crypto.py IPSecProposal.clean   100% 3 0 0   50% 2 1   80%
vpn/models/crypto.py IPSecPolicy.__str__   100% 1 0 0   100% 0 0   100%
vpn/models/crypto.py IPSecProfile.__str__   0% 1 1 0   100% 0 0   0%
vpn/models/crypto.py (no function)   100% 69 0 0   100% 0 0   100%
vpn/models/l2vpn.py L2VPN.__str__   100% 3 0 0   100% 2 0   100%
vpn/models/l2vpn.py L2VPN.get_status_color   0% 1 1 0   100% 0 0   0%
vpn/models/l2vpn.py L2VPN.can_add_termination   0% 3 3 0   0% 2 0   0%
vpn/models/l2vpn.py L2VPNTermination.__str__   0% 3 3 0   0% 2 0   0%
vpn/models/l2vpn.py L2VPNTermination.clean   0% 11 11 0   0% 8 0   0%
vpn/models/l2vpn.py L2VPNTermination.assigned_object_parent   0% 8 8 0   0% 6 0   0%
vpn/models/l2vpn.py L2VPNTermination.assigned_object_site   0% 1 1 0   100% 0 0   0%
vpn/models/l2vpn.py (no function)   100% 46 0 0   100% 0 0   100%
vpn/models/tunnels.py Tunnel.__str__   0% 1 1 0   100% 0 0   0%
vpn/models/tunnels.py Tunnel.get_status_color   0% 1 1 0   100% 0 0   0%
vpn/models/tunnels.py TunnelTermination.__str__   0% 1 1 0   100% 0 0   0%
vpn/models/tunnels.py TunnelTermination.get_absolute_url   0% 1 1 0   100% 0 0   0%
vpn/models/tunnels.py TunnelTermination.get_role_color   0% 1 1 0   100% 0 0   0%
vpn/models/tunnels.py TunnelTermination.clean   0% 3 3 0   0% 2 0   0%
vpn/models/tunnels.py TunnelTermination.to_objectchange   0% 3 3 0   100% 0 0   0%
vpn/models/tunnels.py (no function)   100% 48 0 0   100% 0 0   100%
vpn/search.py (no function)   100% 42 0 0   100% 0 0   100%
vpn/tables/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
vpn/tables/crypto.py (no function)   100% 58 0 0   100% 0 0   100%
vpn/tables/l2vpn.py (no function)   100% 30 0 0   100% 0 0   100%
vpn/tables/tunnels.py (no function)   100% 38 0 0   100% 0 0   100%
vpn/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
vpn/ui/panels.py (no function)   100% 71 0 0   100% 0 0   100%
vpn/urls.py (no function)   100% 5 0 0   100% 0 0   100%
vpn/views.py TunnelGroupView.get_extra_context   0% 1 1 0   100% 0 0   0%
vpn/views.py TunnelEditView.dispatch   0% 3 3 0   0% 2 0   0%
vpn/views.py IKEPolicyView.get_extra_context   0% 1 1 0   100% 0 0   0%
vpn/views.py IPSecPolicyView.get_extra_context   0% 1 1 0   100% 0 0   0%
vpn/views.py L2VPNView.get_extra_context   0% 5 5 0   100% 0 0   0%
vpn/views.py (no function)   100% 388 0 0   100% 0 0   100%
wireless/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
wireless/api/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
wireless/api/serializers.py (no function)   100% 2 0 0   100% 0 0   100%
wireless/api/serializers_/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
wireless/api/serializers_/nested.py (no function)   100% 16 0 0   100% 0 0   100%
wireless/api/serializers_/wirelesslans.py (no function)   100% 33 0 0   100% 0 0   100%
wireless/api/serializers_/wirelesslinks.py (no function)   100% 21 0 0   100% 0 0   100%
wireless/api/urls.py (no function)   100% 9 0 0   100% 0 0   100%
wireless/api/views.py WirelessRootView.get_view_name   0% 1 1 0   100% 0 0   0%
wireless/api/views.py (no function)   100% 19 0 0   100% 0 0   100%
wireless/apps.py WirelessConfig.ready   100% 3 0 0   100% 0 0   100%
wireless/apps.py (no function)   100% 4 0 0   100% 0 0   100%
wireless/choices.py (no function)   100% 223 0 0   100% 0 0   100%
wireless/constants.py (no function)   100% 2 0 0   100% 0 0   100%
wireless/filtersets.py WirelessLANFilterSet.search   0% 4 4 0   0% 2 0   0%
wireless/filtersets.py WirelessLinkFilterSet.search   0% 4 4 0   0% 2 0   0%
wireless/filtersets.py (no function)   100% 46 0 0   100% 0 0   100%
wireless/forms/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
wireless/forms/bulk_edit.py (no function)   100% 44 0 0   100% 0 0   100%
wireless/forms/bulk_import.py WirelessLinkImportForm.__init__   0% 14 14 0   0% 6 0   0%
wireless/forms/bulk_import.py (no function)   100% 44 0 0   100% 0 0   100%
wireless/forms/filtersets.py (no function)   100% 43 0 0   100% 0 0   100%
wireless/forms/model_forms.py (no function)   100% 51 0 0   100% 0 0   100%
wireless/graphql/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
wireless/graphql/enums.py (no function)   100% 8 0 0   100% 0 0   100%
wireless/graphql/filter_mixins.py (no function)   92% 13 1 0   50% 2 1   87%
wireless/graphql/filters.py (no function)   91% 35 3 0   50% 2 1   89%
wireless/graphql/schema.py (no function)   100% 11 0 0   100% 0 0   100%
wireless/graphql/types.py WirelessLANType.scope   0% 1 1 0   100% 0 0   0%
wireless/graphql/types.py (no function)   86% 21 3 0   50% 2 1   83%
wireless/models.py WirelessLAN.__str__   100% 1 0 0   100% 0 0   100%
wireless/models.py WirelessLAN.get_status_color   0% 1 1 0   100% 0 0   0%
wireless/models.py WirelessLink.__str__   0% 1 1 0   100% 0 0   0%
wireless/models.py WirelessLink.get_status_color   0% 1 1 0   100% 0 0   0%
wireless/models.py WirelessLink.clean   0% 5 5 0   0% 4 0   0%
wireless/models.py WirelessLink.save   0% 3 3 0   100% 0 0   0%
wireless/models.py (no function)   100% 58 0 0   100% 0 0   100%
wireless/search.py (no function)   100% 17 0 0   100% 0 0   100%
wireless/signals.py update_connected_interfaces   0% 18 18 0   0% 10 0   0%
wireless/signals.py nullify_connected_interfaces   0% 9 9 0   0% 6 0   0%
wireless/signals.py (no function)   100% 12 0 0   100% 0 0   100%
wireless/tables/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
wireless/tables/wirelesslan.py (no function)   100% 33 0 0   100% 0 0   100%
wireless/tables/wirelesslink.py (no function)   100% 19 0 0   100% 0 0   100%
wireless/ui/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
wireless/ui/panels.py WirelessLinkInterfacePanel.__init__   100% 3 0 0   100% 0 0   100%
wireless/ui/panels.py WirelessLinkInterfacePanel.get_context   0% 2 2 0   100% 0 0   0%
wireless/ui/panels.py (no function)   100% 28 0 0   100% 0 0   100%
wireless/urls.py (no function)   100% 5 0 0   100% 0 0   100%
wireless/utils.py get_channel_attr   0% 7 7 0   0% 4 0   0%
wireless/utils.py (no function)   100% 5 0 0   100% 0 0   100%
wireless/views.py WirelessLANGroupView.get_extra_context   0% 2 2 0   100% 0 0   0%
wireless/views.py (no function)   100% 128 0 0   100% 0 0   100%
Total     67% 59785 19920 0   15% 11042 750   59%

No items found using the specified filter.