Coverage report: 100%

Files Functions Classes

coverage.py v7.10.6, created at 2025-09-17 19:54 +0000

File function statements missing excluded coverage
tdom/__init__.py (no function) 4 0 0 100%
tdom/callables.py CallableInfo.from_callable 24 0 0 100%
tdom/callables.py CallableInfo.supports_zero_args 1 0 0 100%
tdom/callables.py get_callable_info 1 0 0 100%
tdom/callables.py (no function) 17 0 0 100%
tdom/callables_test.py callable_zero_args 0 0 2 100%
tdom/callables_test.py test_zero_args 7 0 0 100%
tdom/callables_test.py callable_positional 0 0 2 100%
tdom/callables_test.py test_positional 7 0 0 100%
tdom/callables_test.py callable_positional_only 0 0 2 100%
tdom/callables_test.py test_positional_only 7 0 0 100%
tdom/callables_test.py callable_positional_only_default 0 0 2 100%
tdom/callables_test.py test_positional_only_default 7 0 0 100%
tdom/callables_test.py callable_kwargs 0 0 2 100%
tdom/callables_test.py test_kwargs 7 0 0 100%
tdom/callables_test.py callable_mixed 0 0 2 100%
tdom/callables_test.py test_mixed 7 0 0 100%
tdom/callables_test.py callable_positional_with_defaults 0 0 2 100%
tdom/callables_test.py test_positional_with_defaults 7 0 0 100%
tdom/callables_test.py callable_keyword_only 0 0 2 100%
tdom/callables_test.py test_keyword_only 7 0 0 100%
tdom/callables_test.py callable_var_positional 0 0 2 100%
tdom/callables_test.py test_var_positional 7 0 0 100%
tdom/callables_test.py callable_all_types 0 0 2 100%
tdom/callables_test.py test_all_types 7 0 0 100%
tdom/callables_test.py (no function) 12 0 18 100%
tdom/classnames.py classnames 18 0 0 100%
tdom/classnames.py (no function) 1 0 0 100%
tdom/classnames_test.py test_classnames_empty 1 0 0 100%
tdom/classnames_test.py test_classnames_strings 1 0 0 100%
tdom/classnames_test.py test_classnames_strings_strip 1 0 0 100%
tdom/classnames_test.py test_cslx_empty_strings 1 0 0 100%
tdom/classnames_test.py test_clsx_booleans 1 0 0 100%
tdom/classnames_test.py test_classnames_lists_and_tuples 1 0 0 100%
tdom/classnames_test.py test_classnames_dicts 1 0 0 100%
tdom/classnames_test.py test_classnames_mixed_inputs 1 0 0 100%
tdom/classnames_test.py test_classnames_ignores_none_and_false 1 0 0 100%
tdom/classnames_test.py test_classnames_raises_type_error_on_invalid_input 4 0 0 100%
tdom/classnames_test.py test_classnames_kitchen_sink 1 0 0 100%
tdom/classnames_test.py (no function) 13 0 0 100%
tdom/nodes.py Node.__html__ 1 0 0 100%
tdom/nodes.py Text.__str__ 1 0 0 100%
tdom/nodes.py Fragment.__str__ 1 0 0 100%
tdom/nodes.py Comment.__str__ 1 0 0 100%
tdom/nodes.py DocumentType.__str__ 1 0 0 100%
tdom/nodes.py Element.__post_init__ 4 0 0 100%
tdom/nodes.py Element.is_void 1 0 0 100%
tdom/nodes.py Element.is_content 1 0 0 100%
tdom/nodes.py Element.__str__ 9 0 0 100%
tdom/nodes.py (no function) 33 0 0 100%
tdom/nodes_test.py test_comment 2 0 0 100%
tdom/nodes_test.py test_comment_empty 2 0 0 100%
tdom/nodes_test.py test_comment_special_chars 2 0 0 100%
tdom/nodes_test.py test_doctype_default 2 0 0 100%
tdom/nodes_test.py test_doctype_custom 2 0 0 100%
tdom/nodes_test.py test_text 2 0 0 100%
tdom/nodes_test.py test_text_escaping 2 0 0 100%
tdom/nodes_test.py test_text_safe 4 0 0 100%
tdom/nodes_test.py test_text_safe.CustomHTML.__html__ 1 0 0 100%
tdom/nodes_test.py test_fragment_empty 2 0 0 100%
tdom/nodes_test.py test_fragment_with_text 2 0 0 100%
tdom/nodes_test.py test_fragment_with_multiple_texts 2 0 0 100%
tdom/nodes_test.py test_element_no_children 3 0 0 100%
tdom/nodes_test.py test_void_element_no_children 3 0 0 100%
tdom/nodes_test.py test_element_invalid_empty_tag 2 0 0 100%
tdom/nodes_test.py test_element_is_content 4 0 0 100%
tdom/nodes_test.py test_void_element_with_attributes 2 0 0 100%
tdom/nodes_test.py test_void_element_with_children 2 0 0 100%
tdom/nodes_test.py test_standard_element_with_attributes 2 0 0 100%
tdom/nodes_test.py test_standard_element_with_text_child 2 0 0 100%
tdom/nodes_test.py test_script_element_with_text_child 2 0 0 100%
tdom/nodes_test.py test_title_element_with_text_child 2 0 0 100%
tdom/nodes_test.py test_standard_element_with_element_children 2 0 0 100%
tdom/nodes_test.py test_element_with_fragment_with_children 2 0 0 100%
tdom/nodes_test.py test_standard_element_with_mixed_children 2 0 0 100%
tdom/nodes_test.py test_complex_tree 2 0 0 100%
tdom/nodes_test.py test_dunder_html_method 2 0 0 100%
tdom/nodes_test.py test_escaping_of_text_content 2 0 0 100%
tdom/nodes_test.py test_escaping_of_attribute_values 2 0 0 100%
tdom/nodes_test.py (no function) 30 0 0 100%
tdom/parser.py NodeParser.__init__ 3 0 0 100%
tdom/parser.py NodeParser.handle_starttag 4 0 0 100%
tdom/parser.py NodeParser.handle_endtag 15 0 0 100%
tdom/parser.py NodeParser.handle_data 2 0 0 100%
tdom/parser.py NodeParser.handle_comment 2 0 0 100%
tdom/parser.py NodeParser.handle_decl 5 0 0 100%
tdom/parser.py NodeParser.get_parent 1 0 0 100%
tdom/parser.py NodeParser.get_open_element 1 0 0 100%
tdom/parser.py NodeParser.get_most_recent_closed_element 4 0 0 100%
tdom/parser.py NodeParser.append_element_child 6 0 0 100%
tdom/parser.py NodeParser.append_child 2 0 0 100%
tdom/parser.py NodeParser.close 3 0 0 100%
tdom/parser.py NodeParser.get_node 6 0 0 100%
tdom/parser.py NodeParser.feed 2 0 0 100%
tdom/parser.py parse_html 6 0 0 100%
tdom/parser.py (no function) 22 0 0 100%
tdom/parser_test.py test_parse_empty 2 0 0 100%
tdom/parser_test.py test_parse_text 2 0 0 100%
tdom/parser_test.py test_parse_text_with_entities 2 0 0 100%
tdom/parser_test.py test_parse_void_element 2 0 0 100%
tdom/parser_test.py test_parse_void_element_self_closed 2 0 0 100%
tdom/parser_test.py test_parse_uppercase_void_element 2 0 0 100%
tdom/parser_test.py test_parse_standard_element_with_text 2 0 0 100%
tdom/parser_test.py test_parse_nested_elements 2 0 0 100%
tdom/parser_test.py test_parse_element_with_attributes 2 0 0 100%
tdom/parser_test.py test_parse_comment 2 0 0 100%
tdom/parser_test.py test_parse_doctype 2 0 0 100%
tdom/parser_test.py test_parse_explicit_fragment_empty 2 0 0 100%
tdom/parser_test.py test_parse_explicit_fragment_with_content 2 0 0 100%
tdom/parser_test.py test_parse_explicit_fragment_with_text 2 0 0 100%
tdom/parser_test.py test_parse_explicit_fragment_nested 2 0 0 100%
tdom/parser_test.py test_parse_multiple_voids 2 0 0 100%
tdom/parser_test.py test_parse_mixed_content 2 0 0 100%
tdom/parser_test.py test_parse_script_tag_content 3 0 0 100%
tdom/parser_test.py test_parse_script_with_entities 3 0 0 100%
tdom/parser_test.py test_parse_textarea_tag_content 3 0 0 100%
tdom/parser_test.py test_parse_textarea_with_entities 3 0 0 100%
tdom/parser_test.py test_parse_title_unusual 3 0 0 100%
tdom/parser_test.py test_parse_mismatched_tags 2 0 0 100%
tdom/parser_test.py test_parse_unclosed_tag 2 0 0 100%
tdom/parser_test.py test_parse_unexpected_closing_tag 2 0 0 100%
tdom/parser_test.py test_nested_self_closing_tags 2 0 0 100%
tdom/parser_test.py test_parse_html_iter_preserves_chunks 3 0 0 100%
tdom/parser_test.py (no function) 30 0 0 100%
tdom/processor.py HasHTMLDunder.__html__ 0 0 1 100%
tdom/processor.py _format_safe 2 0 0 100%
tdom/processor.py _format_unsafe 2 0 0 100%
tdom/processor.py format_interpolation 1 0 0 100%
tdom/processor.py _placeholder 1 0 0 100%
tdom/processor.py _placholder_index 1 0 0 100%
tdom/processor.py _instrument 10 0 0 100%
tdom/processor.py _instrument_and_parse_internal 2 0 0 100%
tdom/processor.py _callable_info 1 0 0 100%
tdom/processor.py _instrument_and_parse 2 0 0 100%
tdom/processor.py _force_dict 4 0 0 100%
tdom/processor.py _process_aria_attr 9 0 0 100%
tdom/processor.py _process_data_attr 6 0 0 100%
tdom/processor.py _process_class_attr 1 0 0 100%
tdom/processor.py _process_style_attr 9 0 0 100%
tdom/processor.py _substitute_spread_attrs 3 0 0 100%
tdom/processor.py _process_attr 10 0 0 100%
tdom/processor.py _substitute_interpolated_attrs 15 0 0 100%
tdom/processor.py _process_html_attrs 5 0 0 100%
tdom/processor.py _substitute_attrs 2 0 0 100%
tdom/processor.py _substitute_and_flatten_children 7 0 0 100%
tdom/processor.py _node_from_value 18 0 0 100%
tdom/processor.py _kebab_to_snake 1 0 0 100%
tdom/processor.py _invoke_component 20 0 0 100%
tdom/processor.py _substitute_node 18 0 0 100%
tdom/processor.py html 2 0 0 100%
tdom/processor.py (no function) 45 0 3 100%
tdom/processor_test.py test_parse_empty 3 0 0 100%
tdom/processor_test.py test_parse_text 3 0 0 100%
tdom/processor_test.py test_parse_void_element 3 0 0 100%
tdom/processor_test.py test_parse_void_element_self_closed 3 0 0 100%
tdom/processor_test.py test_parse_chain_of_void_elements 3 0 0 100%
tdom/processor_test.py test_parse_element_with_text 3 0 0 100%
tdom/processor_test.py test_parse_element_with_attributes 3 0 0 100%
tdom/processor_test.py test_parse_nested_elements 3 0 0 100%
tdom/processor_test.py test_interpolated_text_content 4 0 0 100%
tdom/processor_test.py test_escaping_of_interpolated_text_content 4 0 0 100%
tdom/processor_test.py Convertible.__str__ 1 0 0 100%
tdom/processor_test.py Convertible.__repr__ 1 0 0 100%
tdom/processor_test.py test_conversions 5 0 0 100%
tdom/processor_test.py test_interpolated_false_content 3 0 0 100%
tdom/processor_test.py test_interpolated_none_content 3 0 0 100%
tdom/processor_test.py test_interpolated_zero_arg_function 3 0 0 100%
tdom/processor_test.py test_interpolated_zero_arg_function.get_value 1 0 0 100%
tdom/processor_test.py test_interpolated_multi_arg_function_fails 2 0 1 100%
tdom/processor_test.py test_interpolated_multi_arg_function_fails.add 0 0 1 100%
tdom/processor_test.py test_raw_html_injection_with_markupsafe 4 0 0 100%
tdom/processor_test.py test_raw_html_injection_with_dunder_html_protocol 7 0 0 100%
tdom/processor_test.py test_raw_html_injection_with_dunder_html_protocol.SafeContent.__init__ 1 0 0 100%
tdom/processor_test.py test_raw_html_injection_with_dunder_html_protocol.SafeContent.__html__ 1 0 0 100%
tdom/processor_test.py test_raw_html_injection_with_format_spec 4 0 0 100%
tdom/processor_test.py test_raw_html_injection_with_markupsafe_unsafe_format_spec 4 0 0 100%
tdom/processor_test.py test_conditional_rendering_with_if_else 9 0 0 100%
tdom/processor_test.py test_conditional_rendering_with_and 8 0 0 100%
tdom/processor_test.py test_interpolated_template_content 4 0 0 100%
tdom/processor_test.py test_interpolated_element_content 4 0 0 100%
tdom/processor_test.py test_interpolated_nonstring_content 4 0 0 100%
tdom/processor_test.py test_list_items 4 0 0 100%
tdom/processor_test.py test_nested_list_items 7 0 0 100%
tdom/processor_test.py test_interpolated_attribute_value 4 0 0 100%
tdom/processor_test.py test_escaping_of_interpolated_attribute_value 4 0 0 100%
tdom/processor_test.py test_interpolated_unquoted_attribute_value 4 0 0 100%
tdom/processor_test.py test_interpolated_attribute_value_true 4 0 0 100%
tdom/processor_test.py test_interpolated_attribute_value_falsy 5 0 0 100%
tdom/processor_test.py test_interpolated_attribute_spread_dict 4 0 0 100%
tdom/processor_test.py test_interpolated_mixed_attribute_values_and_spread_dict 5 0 0 100%
tdom/processor_test.py test_multiple_attribute_spread_dicts 5 0 0 100%
tdom/processor_test.py test_interpolated_class_attribute 4 0 0 100%
tdom/processor_test.py test_interpolated_attribute_spread_with_class_attribute 4 0 0 100%
tdom/processor_test.py test_interpolated_data_attributes 4 0 0 100%
tdom/processor_test.py test_interpolated_aria_attributes 4 0 0 100%
tdom/processor_test.py test_interpolated_style_attribute 4 0 0 100%
tdom/processor_test.py test_style_attribute_str 4 0 0 100%
tdom/processor_test.py test_style_attribute_non_str_non_dict 3 0 0 100%
tdom/processor_test.py FunctionComponent 5 0 0 100%
tdom/processor_test.py test_interpolated_template_component 3 0 0 100%
tdom/processor_test.py test_interpolated_template_component_no_children_provided 3 0 0 100%
tdom/processor_test.py test_invalid_component_invocation 2 0 0 100%
tdom/processor_test.py FunctionComponentNoChildren 5 0 0 100%
tdom/processor_test.py test_interpolated_template_component_ignore_children 3 0 0 100%
tdom/processor_test.py FunctionComponentKeywordArgs 5 0 0 100%
tdom/processor_test.py test_children_always_passed_via_kwargs 3 0 0 100%
tdom/processor_test.py test_children_always_passed_via_kwargs_even_when_empty 3 0 0 100%
tdom/processor_test.py ColumnsComponent 1 0 0 100%
tdom/processor_test.py test_fragment_from_component 3 0 0 100%
tdom/processor_test.py test_component_passed_as_attr_value 4 0 0 100%
tdom/processor_test.py test_component_passed_as_attr_value.Wrapper 1 0 0 100%
tdom/processor_test.py test_nested_component_gh23 4 0 0 100%
tdom/processor_test.py test_nested_component_gh23.Header 1 0 0 100%
tdom/processor_test.py test_component_returning_iterable 4 0 0 100%
tdom/processor_test.py test_component_returning_iterable.Items 3 0 0 100%
tdom/processor_test.py test_component_returning_explicit_fragment 4 0 0 100%
tdom/processor_test.py test_component_returning_explicit_fragment.Items 1 0 0 100%
tdom/processor_test.py ClassComponent.__call__ 1 0 0 100%
tdom/processor_test.py test_class_component_implicit_invocation 3 0 0 100%
tdom/processor_test.py test_class_component_direct_invocation 4 0 0 100%
tdom/processor_test.py ClassComponentNoChildren.__call__ 1 0 0 100%
tdom/processor_test.py test_class_component_implicit_invocation_ignore_children 3 0 0 100%
tdom/processor_test.py AttributeTypeComponent 7 0 0 100%
tdom/processor_test.py test_attribute_type_component 9 0 0 100%
tdom/processor_test.py test_component_non_callable_fails 2 0 0 100%
tdom/processor_test.py RequiresPositional 0 0 1 100%
tdom/processor_test.py test_component_requiring_positional_arg_fails 2 0 0 100%
tdom/processor_test.py (no function) 83 0 1 100%
tdom/utils.py convert 0 0 1 100%
tdom/utils.py convert 0 0 1 100%
tdom/utils.py convert 7 0 0 100%
tdom/utils.py _matcher_matches 1 0 0 100%
tdom/utils.py _format_interpolation 7 0 0 100%
tdom/utils.py format_interpolation 1 0 0 100%
tdom/utils.py (no function) 12 0 6 100%
tdom/utils_test.py Convertible.__str__ 1 0 0 100%
tdom/utils_test.py Convertible.__repr__ 1 0 0 100%
tdom/utils_test.py test_convert_none 2 0 0 100%
tdom/utils_test.py test_convert_a 3 0 0 100%
tdom/utils_test.py test_convert_r 2 0 0 100%
tdom/utils_test.py test_convert_s 2 0 0 100%
tdom/utils_test.py test_format_interpolation_no_formatting 3 0 0 100%
tdom/utils_test.py test_format_interpolation_a 3 0 0 100%
tdom/utils_test.py test_format_interpolation_r 3 0 0 100%
tdom/utils_test.py test_format_interpolation_s 3 0 0 100%
tdom/utils_test.py test_format_interpolation_default_formatting 3 0 0 100%
tdom/utils_test.py test_format_interpolation_custom_formatter_match_exact 4 0 0 100%
tdom/utils_test.py test_format_interpolation_custom_formatter_match_exact.formatter 1 0 0 100%
tdom/utils_test.py test_format_interpolation_custom_formatter_match_predicate 5 0 0 100%
tdom/utils_test.py test_format_interpolation_custom_formatter_match_predicate.matcher 1 0 0 100%
tdom/utils_test.py test_format_interpolation_custom_formatter_match_predicate.formatter 1 0 0 100%
tdom/utils_test.py (no function) 16 0 0 100%
Total   1121 0 54 100%

No items found using the specified filter.