Coverage report: 82%

Files Functions Classes

coverage.py v7.15.4, created at 2026-08-08 20:34 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
pyWebLayout/__init__.py (no function)   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/__init__.py (no function)   100% 5 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Block.__init__   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Block.block_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Paragraph.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Paragraph.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py Paragraph.add_word   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Paragraph.create_word   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py Paragraph.add_span   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py Paragraph.create_span   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py Paragraph.words   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Paragraph.words_iter   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py Paragraph.spans   0% 2 2 1   0% 2 0   0%
pyWebLayout/abstract/block.py Paragraph.word_count   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Paragraph.__len__   100% 1 0 0   100% 0 0   100%
pyWebLayout/abstract/block.py Heading.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Heading.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py Heading.level   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Heading.level   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Quote.__init__   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Quote.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py Quote.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Quote.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py CodeBlock.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py CodeBlock.create_and_add_to   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/block.py CodeBlock.language   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py CodeBlock.language   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py CodeBlock.add_line   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py CodeBlock.lines   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py CodeBlock.line_count   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HList.__init__   100% 4 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HList.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py HList.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HList.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HList.default_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HList.default_style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py HList.add_item   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HList.create_item   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py HList.items   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py HList.item_count   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py ListItem.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py ListItem.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py ListItem.term   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py ListItem.term   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py ListItem.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py ListItem.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableCell.__init__   100% 5 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableCell.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableCell.is_header   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableCell.is_header   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableCell.colspan   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableCell.colspan   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableCell.rowspan   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableCell.rowspan   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableCell.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableCell.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableRow.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableRow.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableRow.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableRow.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableRow.add_cell   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py TableRow.create_cell   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py TableRow.cells   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py TableRow.cell_count   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Table.__init__   100% 6 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Table.create_and_add_to   0% 5 5 1   100% 0 0   0%
pyWebLayout/abstract/block.py Table.caption   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Table.caption   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Table.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Table.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py Table.add_row   100% 6 0 1   100% 4 0   100%
pyWebLayout/abstract/block.py Table.create_row   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py Table.header_rows   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py Table.body_rows   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py Table.footer_rows   100% 2 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py Table.all_rows   100% 6 0 1   100% 6 0   100%
pyWebLayout/abstract/block.py Table.row_count   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.__init__   100% 5 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.create_and_add_to   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/block.py Image.source   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.source   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.alt_text   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.alt_text   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.width   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.width   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.height   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.height   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.get_dimensions   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image.get_aspect_ratio   100% 3 0 1   100% 2 0   100%
pyWebLayout/abstract/block.py Image.calculate_scaled_dimensions   80% 10 2 1   83% 6 1   81%
pyWebLayout/abstract/block.py Image._is_url   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py Image._download_to_temp   75% 16 4 1   100% 0 0   75%
pyWebLayout/abstract/block.py Image.load_image_data   81% 21 4 1   88% 8 1   83%
pyWebLayout/abstract/block.py Image.get_image_info   90% 21 2 1   75% 12 3   85%
pyWebLayout/abstract/block.py LinkedImage.__init__   100% 7 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py LinkedImage.location   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py LinkedImage.link_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py LinkedImage.link_callback   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py LinkedImage.params   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py LinkedImage.link_title   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/block.py LinkedImage.execute_link   86% 7 1 1   75% 4 1   82%
pyWebLayout/abstract/block.py HorizontalRule.__init__   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py HorizontalRule.create_and_add_to   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/block.py PageBreak.__init__   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/block.py PageBreak.create_and_add_to   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/block.py (no function)   100% 211 0 17   100% 0 0   100%
pyWebLayout/abstract/document.py Document.__init__   84% 19 3 1   50% 6 1   76%
pyWebLayout/abstract/document.py Document.blocks   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.default_style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Document.default_style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Document.add_block   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.create_paragraph   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/document.py Document.create_heading   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/document.py Document.create_chapter   0% 3 3 1   0% 2 0   0%
pyWebLayout/abstract/document.py Document.add_anchor   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.get_anchor   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.add_resource   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.get_resource   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.add_stylesheet   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.add_script   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.get_title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.set_title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.title   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Document.find_blocks_by_type   100% 4 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.find_blocks_by_type._find_recursive   71% 7 2 0   75% 8 2   73%
pyWebLayout/abstract/document.py Document.find_headings   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.generate_table_of_contents   100% 10 0 1   100% 4 0   100%
pyWebLayout/abstract/document.py Document.get_or_create_style   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.get_font_for_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.update_rendering_context   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Document.get_style_registry   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Document.get_concrete_style_registry   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Chapter.__init__   100% 6 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Chapter.title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Chapter.title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Chapter.level   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Chapter.blocks   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Chapter.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Chapter.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/document.py Chapter.add_block   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Chapter.create_paragraph   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/document.py Chapter.create_heading   0% 5 5 1   0% 2 0   0%
pyWebLayout/abstract/document.py Book.__init__   100% 4 0 1   100% 2 0   100%
pyWebLayout/abstract/document.py Book.chapters   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Book.add_chapter   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Book.create_chapter   100% 5 0 1   50% 2 1   86%
pyWebLayout/abstract/document.py Book.get_author   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Book.set_author   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/document.py Book.generate_table_of_contents   100% 5 0 1   100% 4 0   100%
pyWebLayout/abstract/document.py (no function)   100% 78 0 4   100% 0 0   100%
pyWebLayout/abstract/functional.py Link.__init__   100% 6 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Link.location   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Link.link_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Link.params   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Link.title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Link.html_id   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/functional.py Link.execute   100% 3 0 1   100% 2 0   100%
pyWebLayout/abstract/functional.py Button.__init__   100% 5 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Button.label   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Button.label   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Button.enabled   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Button.enabled   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Button.params   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Button.html_id   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/functional.py Button.execute   100% 3 0 1   100% 2 0   100%
pyWebLayout/abstract/functional.py Form.__init__   100% 5 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Form.form_id   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Form.action   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Form.html_id   0% 1 1 1   100% 0 0   0%
pyWebLayout/abstract/functional.py Form.add_field   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Form.get_field   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Form.get_values   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py Form.execute   100% 4 0 1   100% 2 0   100%
pyWebLayout/abstract/functional.py FormField.__init__   100% 7 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.name   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.field_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.label   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.value   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.value   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.required   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.options   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.form   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py FormField.form   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/functional.py (no function)   100% 84 0 6   100% 0 0   100%
pyWebLayout/abstract/inline.py _hyphen_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.__init__   100% 8 0 1   100% 2 0   100%
pyWebLayout/abstract/inline.py Word.create_and_add_to   100% 32 0 1   100% 22 0   100%
pyWebLayout/abstract/inline.py Word.add_concete   100% 1 0 0   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.text   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.background   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.previous   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.next   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.add_next   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.with_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py Word.possible_hyphenation   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py FormattedSpan.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py FormattedSpan.create_and_add_to   100% 11 0 1   100% 8 0   100%
pyWebLayout/abstract/inline.py FormattedSpan.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py FormattedSpan.background   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py FormattedSpan.words   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py FormattedSpan.add_word   100% 6 0 1   100% 2 0   100%
pyWebLayout/abstract/inline.py LinkedWord.__init__   100% 6 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.location   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.link_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.link_callback   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.params   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.link_title   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.with_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LinkedWord.execute_link   83% 6 1 1   75% 4 1   80%
pyWebLayout/abstract/inline.py LineBreak.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LineBreak.block_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/abstract/inline.py LineBreak.create_and_add_to   100% 9 0 1   100% 6 0   100%
pyWebLayout/abstract/inline.py (no function)   100% 60 0 4   100% 0 0   100%
pyWebLayout/abstract/interactive_image.py InteractiveImage.__init__   100% 4 0 1   100% 0 0   100%
pyWebLayout/abstract/interactive_image.py InteractiveImage.interact   100% 4 0 1   100% 4 0   100%
pyWebLayout/abstract/interactive_image.py InteractiveImage.in_object   100% 3 0 1   100% 0 0   100%
pyWebLayout/abstract/interactive_image.py InteractiveImage.create_and_add_to   60% 10 4 1   38% 8 3   50%
pyWebLayout/abstract/interactive_image.py InteractiveImage.set_rendered_bounds   100% 2 0 1   100% 0 0   100%
pyWebLayout/abstract/interactive_image.py (no function)   100% 11 0 2   100% 0 0   100%
pyWebLayout/concrete/__init__.py (no function)   100% 7 0 1   100% 0 0   100%
pyWebLayout/concrete/box.py Box.__init__   100% 9 0 0   100% 2 0   100%
pyWebLayout/concrete/box.py Box.in_shape   100% 1 0 0   100% 0 0   100%
pyWebLayout/concrete/box.py (no function)   100% 9 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.__init__   100% 9 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.constraints   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.measure   67% 30 10 1   70% 20 4   68%
pyWebLayout/concrete/dynamic_page.py DynamicPage.get_min_width   70% 23 7 1   50% 18 5   61%
pyWebLayout/concrete/dynamic_page.py DynamicPage.get_preferred_width   72% 29 8 1   55% 22 6   65%
pyWebLayout/concrete/dynamic_page.py DynamicPage.measure_content_height   54% 13 6 1   38% 8 1   48%
pyWebLayout/concrete/dynamic_page.py DynamicPage.layout   100% 7 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.render   86% 7 1 1   67% 6 2   77%
pyWebLayout/concrete/dynamic_page.py DynamicPage.render_partial   33% 15 10 1   10% 10 1   24%
pyWebLayout/concrete/dynamic_page.py DynamicPage.has_more_content   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.reset_pagination   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.invalidate_caches   100% 6 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.add_child   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py DynamicPage.clear_children   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/dynamic_page.py (no function)   100% 29 0 3   100% 0 0   100%
pyWebLayout/concrete/functional.py LinkText.__init__   94% 17 1 1   80% 10 2   89%
pyWebLayout/concrete/functional.py LinkText.link   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py LinkText.set_hovered   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py LinkText.set_pressed   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py LinkText._mark_page_dirty   50% 2 1 1   50% 2 1   50%
pyWebLayout/concrete/functional.py LinkText.render   92% 13 1 1   83% 6 1   89%
pyWebLayout/concrete/functional.py ButtonText.__init__   100% 11 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py ButtonText._visual_text_height   60% 5 2 1   100% 0 0   60%
pyWebLayout/concrete/functional.py ButtonText.button   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py ButtonText.size   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py ButtonText.set_pressed   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py ButtonText.set_hovered   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py ButtonText.set_page   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/functional.py ButtonText._mark_page_dirty   50% 2 1 1   50% 2 1   50%
pyWebLayout/concrete/functional.py ButtonText.render   78% 27 6 1   67% 6 2   76%
pyWebLayout/concrete/functional.py ButtonText.in_object   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py FormFieldText.__init__   100% 9 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py FormFieldText._visual_label_height   60% 5 2 1   100% 0 0   60%
pyWebLayout/concrete/functional.py FormFieldText.field_area_offset   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py FormFieldText.field   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py FormFieldText.size   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py FormFieldText.set_focused   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py FormFieldText.render   91% 23 2 1   100% 4 0   93%
pyWebLayout/concrete/functional.py FormFieldText.handle_click   100% 5 0 1   100% 2 0   100%
pyWebLayout/concrete/functional.py FormFieldText.in_object   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py create_link_text   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py create_button_text   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py create_form_field_text   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/functional.py (no function)   100% 46 0 3   100% 0 0   100%
pyWebLayout/concrete/image.py RenderableImage.__init__   100% 15 0 1   100% 4 0   100%
pyWebLayout/concrete/image.py RenderableImage.origin   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/image.py RenderableImage.size   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/image.py RenderableImage.width   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/image.py RenderableImage.set_origin   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/image.py RenderableImage._load_image   78% 23 5 1   88% 8 1   81%
pyWebLayout/concrete/image.py RenderableImage.render   100% 18 0 1   100% 10 0   100%
pyWebLayout/concrete/image.py RenderableImage._resize_image   93% 15 1 1   75% 4 1   89%
pyWebLayout/concrete/image.py RenderableImage._draw_error_placeholder   94% 35 2 1   80% 10 2   91%
pyWebLayout/concrete/image.py RenderableImage.in_object   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/image.py (no function)   100% 21 0 1   100% 0 0   100%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.__init__   0% 2 2 1   100% 0 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.set_pressed_state   0% 5 5 1   0% 4 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.set_hovered_state   0% 5 5 1   0% 4 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.render_current_state   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.execute_with_feedback   0% 11 11 1   0% 4 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.execute_async_with_feedback   0% 7 7 1   100% 0 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionHandler.execute_async_with_feedback.execute_callback   0% 5 5 0   0% 2 0   0%
pyWebLayout/concrete/interaction_handler.py InteractionStateManager.__init__   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/interaction_handler.py InteractionStateManager.update_hover   88% 17 2 1   67% 12 4   79%
pyWebLayout/concrete/interaction_handler.py InteractionStateManager.handle_mouse_down   89% 9 1 1   75% 4 1   85%
pyWebLayout/concrete/interaction_handler.py InteractionStateManager.handle_mouse_up   100% 9 0 1   67% 6 2   87%
pyWebLayout/concrete/interaction_handler.py InteractionStateManager.reset   83% 6 1 1   75% 4 1   80%
pyWebLayout/concrete/interaction_handler.py (no function)   100% 19 0 3   100% 0 0   100%
pyWebLayout/concrete/page.py Page.__init__   100% 11 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.free_space   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.can_fit_line   100% 6 0 1   100% 2 0   100%
pyWebLayout/concrete/page.py Page.size   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.origin   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/page.py Page.content_origin   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.content_rect   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.remaining_height   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.canvas_size   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.content_size   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.border_size   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.available_width   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.callbacks   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.is_dirty   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/page.py Page.mark_dirty   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/page.py Page.mark_clean   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/page.py Page.draw   100% 4 0 1   100% 2 0   100%
pyWebLayout/concrete/page.py Page.measurement_draw   100% 4 0 1   100% 2 0   100%
pyWebLayout/concrete/page.py Page.add_child   100% 4 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.remove_child   100% 6 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.clear_children   100% 5 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.children   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page.render_children   86% 7 1 1   75% 8 2   80%
pyWebLayout/concrete/page.py Page.render   100% 5 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py Page._create_canvas   100% 7 0 1   100% 2 0   100%
pyWebLayout/concrete/page.py Page.query_point   100% 11 0 1   100% 8 0   100%
pyWebLayout/concrete/page.py Page._make_query_result   92% 12 1 1   83% 6 1   89%
pyWebLayout/concrete/page.py Page.query_range   95% 19 1 1   86% 14 2   91%
pyWebLayout/concrete/page.py Page.in_object   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/page.py (no function)   100% 54 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py TableCellRenderer.__init__   100% 7 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py TableCellRenderer.render   100% 13 0 1   100% 2 0   100%
pyWebLayout/concrete/table.py TableCellRenderer._render_cell_content   77% 64 15 1   66% 32 9   73%
pyWebLayout/concrete/table.py TableCellRenderer._render_image_in_cell   40% 47 28 1   27% 22 6   36%
pyWebLayout/concrete/table.py TableRowRenderer.__init__   100% 10 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py TableRowRenderer.render   100% 14 0 1   83% 6 1   95%
pyWebLayout/concrete/table.py TableRenderer.__init__   100% 10 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py TableRenderer._calculate_dimensions   92% 12 1 1   75% 4 1   88%
pyWebLayout/concrete/table.py TableRenderer._calculate_row_height_for_section   89% 36 4 1   78% 18 4   85%
pyWebLayout/concrete/table.py TableRenderer._estimate_wrapped_lines   79% 24 5 1   70% 10 3   76%
pyWebLayout/concrete/table.py TableRenderer.render   100% 17 0 1   100% 8 0   100%
pyWebLayout/concrete/table.py TableRenderer._render_caption   100% 10 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py TableRenderer.height   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py TableRenderer.width   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/table.py (no function)   100% 37 0 5   100% 0 0   100%
pyWebLayout/concrete/text.py _glyph_entry_bytes   67% 6 2 1   100% 0 0   67%
pyWebLayout/concrete/text.py configure_text_caches   0% 10 10 1   0% 10 0   0%
pyWebLayout/concrete/text.py clear_text_caches   0% 3 3 1   100% 0 0   0%
pyWebLayout/concrete/text.py _space_advance   60% 15 6 1   100% 2 0   65%
pyWebLayout/concrete/text.py text_cache_stats   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/text.py prewarm_text_caches   0% 42 42 1   0% 20 0   0%
pyWebLayout/concrete/text.py AlignmentHandler.calculate_spacing_and_position   100% 0 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py LeftAlignmentHandler.calculate_spacing_and_position   100% 8 0 1   100% 2 0   100%
pyWebLayout/concrete/text.py CenterRightAlignmentHandler.__init__   100% 1 0 0   100% 0 0   100%
pyWebLayout/concrete/text.py CenterRightAlignmentHandler.calculate_spacing_and_position   100% 15 0 1   100% 6 0   100%
pyWebLayout/concrete/text.py JustifyAlignmentHandler.__init__   100% 4 0 0   100% 0 0   100%
pyWebLayout/concrete/text.py JustifyAlignmentHandler._gap_spacings   80% 5 1 1   75% 4 1   78%
pyWebLayout/concrete/text.py JustifyAlignmentHandler._distribute   100% 7 0 1   100% 2 0   100%
pyWebLayout/concrete/text.py JustifyAlignmentHandler.calculate_spacing_and_position   100% 14 0 1   100% 2 0   100%
pyWebLayout/concrete/text.py Text.__init__   100% 8 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text._calculate_dimensions   100% 10 0 1   100% 2 0   100%
pyWebLayout/concrete/text.py Text.from_word   100% 1 0 0   100% 0 0   100%
pyWebLayout/concrete/text.py Text.text   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.origin   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.line   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.line   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.width   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.size   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.set_origin   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.add_line   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text.in_object   100% 4 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Text._apply_decoration   50% 14 7 1   38% 8 1   45%
pyWebLayout/concrete/text.py Text.render   71% 7 2 1   67% 6 2   69%
pyWebLayout/concrete/text.py Text._render_from_glyph_cache   72% 32 9 1   62% 8 3   70%
pyWebLayout/concrete/text.py Line.__init__   100% 20 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Line.is_paragraph_end   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Line.is_paragraph_end   100% 1 0 0   100% 0 0   100%
pyWebLayout/concrete/text.py Line.render_alignment_handler   100% 3 0 1   100% 2 0   100%
pyWebLayout/concrete/text.py Line._create_alignment_handler   100% 5 0 1   100% 4 0   100%
pyWebLayout/concrete/text.py Line.text_objects   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Line.set_next   0% 1 1 1   100% 0 0   0%
pyWebLayout/concrete/text.py Line._content_width   100% 1 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Line._push_text   100% 2 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Line._pop_text   100% 3 0 1   100% 0 0   100%
pyWebLayout/concrete/text.py Line._measure   100% 3 0 1   100% 2 0   100%
pyWebLayout/concrete/text.py Line.add_word   97% 75 2 1   82% 28 5   93%
pyWebLayout/concrete/text.py Line.render   100% 22 0 1   100% 6 0   100%
pyWebLayout/concrete/text.py Line.query_point   94% 16 1 1   88% 8 1   92%
pyWebLayout/concrete/text.py (no function)   100% 90 0 6   100% 0 0   100%
pyWebLayout/core/__init__.py (no function)   100% 2 0 1   100% 0 0   100%
pyWebLayout/core/base.py Renderable.render   100% 0 0 1   100% 0 0   100%
pyWebLayout/core/base.py Renderable.origin   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/base.py Interactable.__init__   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py Interactable.interact   67% 3 1 1   50% 2 1   60%
pyWebLayout/core/base.py Layoutable.layout   100% 0 0 1   100% 0 0   100%
pyWebLayout/core/base.py Queriable.in_object   100% 3 0 1   100% 0 0   100%
pyWebLayout/core/base.py Hierarchical.__init__   100% 2 0 0   100% 0 0   100%
pyWebLayout/core/base.py Hierarchical.parent   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py Hierarchical.parent   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py Geometric.__init__   100% 3 0 0   100% 0 0   100%
pyWebLayout/core/base.py Geometric.origin   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py Geometric.origin   0% 1 1 1   100% 0 0   0%
pyWebLayout/core/base.py Geometric.size   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py Geometric.size   0% 1 1 1   100% 0 0   0%
pyWebLayout/core/base.py Geometric.set_origin   0% 1 1 1   100% 0 0   0%
pyWebLayout/core/base.py Styleable.__init__   100% 2 0 0   100% 0 0   100%
pyWebLayout/core/base.py Styleable.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py Styleable.style   0% 1 1 1   100% 0 0   0%
pyWebLayout/core/base.py FontRegistry.__init__   100% 2 0 0   100% 0 0   100%
pyWebLayout/core/base.py FontRegistry.get_or_create_font   100% 18 0 1   100% 10 0   100%
pyWebLayout/core/base.py MetadataContainer.__init__   100% 2 0 0   100% 0 0   100%
pyWebLayout/core/base.py MetadataContainer.set_metadata   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py MetadataContainer.get_metadata   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py BlockContainer.__init__   100% 2 0 0   100% 0 0   100%
pyWebLayout/core/base.py BlockContainer.blocks   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/base.py BlockContainer.add_block   100% 3 0 1   50% 2 1   80%
pyWebLayout/core/base.py BlockContainer.create_paragraph   0% 6 6 1   0% 2 0   0%
pyWebLayout/core/base.py BlockContainer.create_heading   0% 8 8 1   0% 4 0   0%
pyWebLayout/core/base.py ContainerAware._validate_container   0% 2 2 1   0% 2 0   0%
pyWebLayout/core/base.py ContainerAware._inherit_style   0% 7 7 1   0% 6 0   0%
pyWebLayout/core/base.py (no function)   98% 57 1 10   50% 2 1   97%
pyWebLayout/core/cache.py _UsageRanked.__init__   100% 14 0 0   100% 4 0   100%
pyWebLayout/core/cache.py _UsageRanked._over_budget   100% 0 0 1   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked._record_add   100% 0 0 1   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked._record_remove   100% 0 0 1   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked.get   100% 7 0 1   100% 2 0   100%
pyWebLayout/core/cache.py _UsageRanked._add_new   100% 3 0 1   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked._remove   100% 7 0 1   100% 2 0   100%
pyWebLayout/core/cache.py _UsageRanked._evict_one   94% 18 1 1   88% 8 1   92%
pyWebLayout/core/cache.py _UsageRanked._evict_to_budget   67% 3 1 0   75% 4 1   71%
pyWebLayout/core/cache.py _UsageRanked._maybe_age   100% 9 0 1   100% 6 0   100%
pyWebLayout/core/cache.py _UsageRanked.clear   100% 3 0 1   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked._base_stats   100% 2 0 0   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked.__len__   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py _UsageRanked.__contains__   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py UsageCache.__init__   100% 4 0 0   100% 2 0   100%
pyWebLayout/core/cache.py UsageCache._over_budget   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py UsageCache.put   100% 10 0 1   100% 4 0   100%
pyWebLayout/core/cache.py UsageCache.max_entries   0% 1 1 0   100% 0 0   0%
pyWebLayout/core/cache.py UsageCache.resize   100% 4 0 1   100% 2 0   100%
pyWebLayout/core/cache.py UsageCache.stats   100% 3 0 1   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache.__init__   100% 7 0 0   100% 2 0   100%
pyWebLayout/core/cache.py SizedUsageCache._over_budget   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache._record_add   100% 3 0 0   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache._record_remove   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache.put   100% 9 0 1   100% 6 0   100%
pyWebLayout/core/cache.py SizedUsageCache.max_bytes   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache.total_bytes   100% 1 0 0   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache.resize   75% 4 1 1   50% 2 1   67%
pyWebLayout/core/cache.py SizedUsageCache.clear   100% 3 0 1   100% 0 0   100%
pyWebLayout/core/cache.py SizedUsageCache.stats   100% 4 0 1   100% 0 0   100%
pyWebLayout/core/cache.py (no function)   100% 46 0 4   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.__init__   100% 4 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.register   100% 13 0 1   100% 4 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.get_by_id   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.get_by_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.get_all_ids   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.get_all_types   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.set_callback   100% 5 0 1   100% 2 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.set_callbacks_by_type   100% 4 0 1   100% 2 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.unregister   73% 11 3 1   50% 4 2   67%
pyWebLayout/core/callback_registry.py CallbackRegistry.clear   100% 4 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.count   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.count_by_type   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry._get_type_name   88% 8 1 1   83% 6 1   86%
pyWebLayout/core/callback_registry.py CallbackRegistry.__len__   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.__contains__   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/callback_registry.py CallbackRegistry.__repr__   100% 0 0 3   100% 0 0   100%
pyWebLayout/core/callback_registry.py (no function)   100% 18 0 3   100% 0 0   100%
pyWebLayout/core/highlight.py Highlight.__post_init__   100% 2 0 1   100% 2 0   100%
pyWebLayout/core/highlight.py Highlight.to_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py Highlight.from_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager.__init__   100% 4 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager.add_highlight   100% 2 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager.remove_highlight   100% 5 0 1   100% 2 0   100%
pyWebLayout/core/highlight.py HighlightManager.get_highlight   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager.list_highlights   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager.clear_all   100% 2 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager.get_highlights_for_page   100% 8 0 1   100% 6 0   100%
pyWebLayout/core/highlight.py HighlightManager._get_filepath   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager._save_highlights   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/highlight.py HighlightManager._load_highlights   50% 6 3 1   100% 0 0   50%
pyWebLayout/core/highlight.py create_highlight_from_query_result   100% 8 0 1   100% 2 0   100%
pyWebLayout/core/highlight.py (no function)   100% 44 0 4   100% 0 0   100%
pyWebLayout/core/persistence.py ensure_dir   100% 3 0 1   100% 0 0   100%
pyWebLayout/core/persistence.py read_json   100% 8 0 1   100% 2 0   100%
pyWebLayout/core/persistence.py write_json   57% 7 3 1   100% 0 0   57%
pyWebLayout/core/persistence.py (no function)   100% 9 0 1   100% 0 0   100%
pyWebLayout/core/query.py QueryResult.to_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/query.py SelectionRange.text   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/query.py SelectionRange.bounds_list   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/query.py SelectionRange.to_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/core/query.py (no function)   97% 29 1 3   50% 2 1   94%
pyWebLayout/io/__init__.py (no function)   100% 0 0 1   100% 0 0   100%
pyWebLayout/io/readers/__init__.py (no function)   100% 2 0 1   100% 0 0   100%
pyWebLayout/io/readers/epub_reader.py default_eink_processor   0% 5 5 1   0% 2 0   0%
pyWebLayout/io/readers/epub_reader.py EPUBReader.__init__   100% 10 0 1   100% 0 0   100%
pyWebLayout/io/readers/epub_reader.py EPUBReader.read   100% 12 0 1   100% 0 0   100%
pyWebLayout/io/readers/epub_reader.py EPUBReader._extract_epub   69% 16 5 1   30% 10 3   54%
pyWebLayout/io/readers/epub_reader.py EPUBReader._parse_package_document   93% 15 1 1   60% 10 4   80%
pyWebLayout/io/readers/epub_reader.py EPUBReader._parse_metadata   94% 31 2 1   93% 28 2   93%
pyWebLayout/io/readers/epub_reader.py EPUBReader._parse_manifest   91% 11 1 1   67% 6 2   82%
pyWebLayout/io/readers/epub_reader.py EPUBReader._parse_spine   90% 10 1 1   62% 8 3   78%
pyWebLayout/io/readers/epub_reader.py EPUBReader._parse_toc   44% 16 9 1   21% 14 3   33%
pyWebLayout/io/readers/epub_reader.py EPUBReader._parse_nav_points   92% 13 1 1   75% 4 1   88%
pyWebLayout/io/readers/epub_reader.py EPUBReader._create_book   100% 16 0 1   88% 16 2   94%
pyWebLayout/io/readers/epub_reader.py EPUBReader._add_cover_chapter   6% 33 31 1   12% 8 1   7%
pyWebLayout/io/readers/epub_reader.py EPUBReader._process_chapter_images   65% 23 8 1   60% 10 2   64%
pyWebLayout/io/readers/epub_reader.py EPUBReader._process_content_images   100% 2 0 1   100% 2 0   100%
pyWebLayout/io/readers/epub_reader.py EPUBReader._add_chapters   69% 36 11 1   80% 10 2   72%
pyWebLayout/io/readers/epub_reader.py EPUBReader._add_chapters.add_to_toc_map   86% 7 1 0   67% 6 2   77%
pyWebLayout/io/readers/epub_reader.py read_epub   100% 2 0 1   100% 0 0   100%
pyWebLayout/io/readers/epub_reader.py (no function)   100% 28 0 2   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py StyleContext.with_font   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py StyleContext.with_background   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py StyleContext.with_css_classes   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py StyleContext.with_css_styles   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py StyleContext.with_attributes   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py StyleContext.push_element   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py create_base_context   100% 5 0 1   100% 4 0   100%
pyWebLayout/io/readers/html_extraction.py apply_element_styling   100% 18 0 1   100% 4 0   100%
pyWebLayout/io/readers/html_extraction.py parse_inline_styles   100% 6 0 1   100% 4 0   100%
pyWebLayout/io/readers/html_extraction.py apply_element_font_styles   83% 75 13 1   81% 48 7   82%
pyWebLayout/io/readers/html_extraction.py apply_background_styles   80% 5 1 1   75% 4 1   78%
pyWebLayout/io/readers/html_extraction.py extract_text_content   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py extract_words_from_nodes   85% 46 7 1   64% 36 5   76%
pyWebLayout/io/readers/html_extraction.py is_inline   100% 5 0 1   100% 4 0   100%
pyWebLayout/io/readers/html_extraction.py process_block_children   100% 21 0 1   100% 12 0   100%
pyWebLayout/io/readers/html_extraction.py process_block_children.flush_run   100% 9 0 1   100% 6 0   100%
pyWebLayout/io/readers/html_extraction.py process_element   100% 3 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py paragraph_handler   97% 33 1 1   83% 24 4   91%
pyWebLayout/io/readers/html_extraction.py div_handler   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py heading_handler   100% 7 0 1   100% 2 0   100%
pyWebLayout/io/readers/html_extraction.py blockquote_handler   100% 4 0 1   100% 2 0   100%
pyWebLayout/io/readers/html_extraction.py preformatted_handler   100% 6 0 1   100% 2 0   100%
pyWebLayout/io/readers/html_extraction.py code_handler   0% 3 3 1   0% 2 0   0%
pyWebLayout/io/readers/html_extraction.py unordered_list_handler   100% 8 0 1   83% 6 1   93%
pyWebLayout/io/readers/html_extraction.py ordered_list_handler   100% 8 0 1   83% 6 1   93%
pyWebLayout/io/readers/html_extraction.py list_item_handler   100% 4 0 1   100% 2 0   100%
pyWebLayout/io/readers/html_extraction.py table_handler   95% 21 1 1   75% 16 4   86%
pyWebLayout/io/readers/html_extraction.py table_row_handler   100% 8 0 1   83% 6 1   93%
pyWebLayout/io/readers/html_extraction.py table_cell_handler   100% 6 0 1   100% 2 0   100%
pyWebLayout/io/readers/html_extraction.py table_header_cell_handler   100% 6 0 1   100% 2 0   100%
pyWebLayout/io/readers/html_extraction.py horizontal_rule_handler   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py line_break_handler   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py image_handler   88% 16 2 1   100% 6 0   91%
pyWebLayout/io/readers/html_extraction.py ignore_handler   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py generic_handler   100% 1 0 1   100% 0 0   100%
pyWebLayout/io/readers/html_extraction.py parse_html_string   100% 13 0 1   100% 8 0   100%
pyWebLayout/io/readers/html_extraction.py (no function)   100% 52 0 2   100% 0 0   100%
pyWebLayout/layout/__init__.py (no function)   100% 0 0 1   100% 0 0   100%
pyWebLayout/layout/document_layouter.py paragraph_layouter   88% 80 10 1   76% 46 7   83%
pyWebLayout/layout/document_layouter.py paragraph_layouter.create_new_line   86% 7 1 1   75% 4 1   82%
pyWebLayout/layout/document_layouter.py pagebreak_layouter   0% 1 1 1   100% 0 0   0%
pyWebLayout/layout/document_layouter.py image_layouter   94% 17 1 1   88% 8 1   92%
pyWebLayout/layout/document_layouter.py table_layouter   100% 14 0 1   100% 2 0   100%
pyWebLayout/layout/document_layouter.py button_layouter   0% 14 14 1   0% 4 0   0%
pyWebLayout/layout/document_layouter.py form_field_layouter   86% 14 2 1   50% 4 2   78%
pyWebLayout/layout/document_layouter.py form_layouter   82% 11 2 1   75% 8 2   79%
pyWebLayout/layout/document_layouter.py DocumentLayouter.__init__   100% 7 0 1   100% 2 0   100%
pyWebLayout/layout/document_layouter.py DocumentLayouter.layout_paragraph   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/document_layouter.py DocumentLayouter.layout_image   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/document_layouter.py DocumentLayouter.layout_table   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/document_layouter.py DocumentLayouter.layout_button   0% 1 1 1   100% 0 0   0%
pyWebLayout/layout/document_layouter.py DocumentLayouter.layout_form   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/document_layouter.py DocumentLayouter.layout_document   59% 22 9 1   55% 22 2   57%
pyWebLayout/layout/document_layouter.py (no function)   100% 27 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py RenderingPosition._key   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py RenderingPosition.to_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py RenderingPosition.from_dict   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py RenderingPosition.copy   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py RenderingPosition.__eq__   100% 3 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_layout.py RenderingPosition.__hash__   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py ChapterInfo.__init__   100% 4 0 0   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py ChapterNavigator.__init__   100% 3 0 0   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py ChapterNavigator._build_chapter_map   100% 13 0 1   100% 8 0   100%
pyWebLayout/layout/ereader_layout.py ChapterNavigator._extract_heading_text   100% 5 0 1   75% 4 1   89%
pyWebLayout/layout/ereader_layout.py ChapterNavigator.get_table_of_contents   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py ChapterNavigator.get_chapter_position   100% 4 0 1   100% 4 0   100%
pyWebLayout/layout/ereader_layout.py ChapterNavigator.get_current_chapter   89% 9 1 1   88% 8 1   88%
pyWebLayout/layout/ereader_layout.py FontFamilyOverride.__init__   0% 1 1 1   100% 0 0   0%
pyWebLayout/layout/ereader_layout.py FontFamilyOverride.override_font   0% 6 6 1   0% 4 0   0%
pyWebLayout/layout/ereader_layout.py FontScaler.scale_font   86% 7 1 1   75% 4 1   82%
pyWebLayout/layout/ereader_layout.py FontScaler.scale_word_spacing   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter.__init__   100% 8 0 0   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter.render_page_forward   95% 21 1 1   93% 14 1   94%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter.render_page_backward   86% 22 3 1   69% 16 3   79%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._backward_anchors   100% 8 0 1   100% 6 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._replay_to   81% 16 3 1   70% 10 3   77%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._position_key   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._scale_block_fonts   100% 9 0 1   100% 4 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._build_scaled_block   97% 35 1 1   93% 28 2   95%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._build_scaled_block.scale   100% 1 0 0   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._layout_block_on_page   77% 13 3 1   70% 10 3   74%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._layout_paragraph_on_page   94% 17 1 1   88% 8 1   92%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._layout_heading_on_page   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._layout_table_on_page   100% 5 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._layout_list_on_page   100% 4 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._layout_image_on_page   100% 7 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_layout.py BidirectionalLayouter._position_compare   100% 7 0 1   100% 6 0   100%
pyWebLayout/layout/ereader_layout.py (no function)   100% 64 0 7   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.__init__   100% 6 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager._load_bookmarks   50% 6 3 1   100% 0 0   50%
pyWebLayout/layout/ereader_manager.py BookmarkManager._save_bookmarks   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.add_bookmark   100% 2 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.remove_bookmark   100% 5 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.get_bookmark   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.list_bookmarks   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.save_reading_position   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py BookmarkManager.load_reading_position   62% 8 3 1   100% 2 0   70%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.__init__   100% 24 0 1   100% 4 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.prewarm_caches   0% 30 30 1   0% 14 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.set_position_changed_callback   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.set_chapter_changed_callback   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._detect_cover   100% 6 0 1   100% 4 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._render_cover_page   77% 13 3 1   50% 4 2   71%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._notify_position_changed   100% 6 0 1   100% 4 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_current_page   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.next_page   95% 19 1 1   88% 8 1   93%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.previous_page   90% 21 2 1   80% 10 2   87%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._is_at_beginning   100% 2 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.jump_to_position   100% 4 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.jump_to_chapter   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.jump_to_chapter_index   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._add_to_history   75% 4 1 1   75% 4 1   75%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._get_from_history   88% 8 1 1   83% 6 1   86%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._clear_history   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.set_font_scale   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_font_scale   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.set_font_family   0% 3 3 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_font_family   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.increase_line_spacing   0% 5 5 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.decrease_line_spacing   0% 5 5 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.increase_inter_block_spacing   0% 5 5 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.decrease_inter_block_spacing   0% 5 5 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.increase_word_spacing   0% 5 5 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.decrease_word_spacing   0% 5 5 1   100% 0 0   0%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_table_of_contents   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_current_chapter   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.add_bookmark   60% 5 2 1   100% 0 0   60%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.remove_bookmark   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.jump_to_bookmark   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.list_bookmarks   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.highlight_point   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.highlight_range   100% 4 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._store_highlight   100% 3 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.remove_highlight   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.list_highlights   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_highlights_for_current_page   100% 2 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.clear_highlights   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager._interaction_state   100% 7 0 1   100% 4 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.handle_hover   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.handle_touch_down   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.handle_touch_up   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.reset_interaction_state   100% 2 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_reading_progress   100% 5 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.has_cover   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.is_on_cover   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.jump_to_cover   80% 5 1 1   50% 2 1   71%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_position_info   100% 3 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.get_cache_stats   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.shutdown   100% 5 0 1   100% 2 0   100%
pyWebLayout/layout/ereader_manager.py EreaderLayoutManager.__del__   50% 4 2 1   100% 0 0   50%
pyWebLayout/layout/ereader_manager.py create_ereader_manager   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/ereader_manager.py (no function)   100% 81 0 3   100% 0 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.__init__   100% 9 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.initialize   100% 4 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.get_page   100% 9 0 1   100% 4 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.cache_page   100% 10 0 1   100% 6 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.invalidate_all   100% 4 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.set_font_scale   100% 3 0 1   100% 2 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.set_font_family   0% 3 3 1   0% 2 0   0%
pyWebLayout/layout/page_buffer.py PageBuffer.get_cache_stats   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py PageBuffer.shutdown   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.__init__   100% 10 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.render_page   100% 11 0 1   100% 6 0   100%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.render_page_backward   55% 11 5 1   33% 6 2   47%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.set_font_family   0% 5 5 1   0% 2 0   0%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.get_font_family   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.get_cache_stats   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py BufferedPageRenderer.shutdown   100% 1 0 1   100% 0 0   100%
pyWebLayout/layout/page_buffer.py (no function)   100% 26 0 3   100% 0 0   100%
pyWebLayout/layout/table_optimizer.py optimize_table_layout   87% 39 5 1   83% 12 2   86%
pyWebLayout/layout/table_optimizer.py layout_cell_content   92% 25 2 1   80% 10 2   89%
pyWebLayout/layout/table_optimizer.py get_column_count   100% 5 0 1   100% 2 0   100%
pyWebLayout/layout/table_optimizer.py sample_table_rows   100% 5 0 1   100% 2 0   100%
pyWebLayout/layout/table_optimizer.py extract_html_column_widths   79% 14 3 1   50% 12 2   65%
pyWebLayout/layout/table_optimizer.py parse_html_width   81% 16 3 1   88% 8 1   83%
pyWebLayout/layout/table_optimizer.py distribute_column_widths   97% 34 1 1   95% 22 1   96%
pyWebLayout/layout/table_optimizer.py calculate_table_overhead   100% 3 0 1   100% 0 0   100%
pyWebLayout/layout/table_optimizer.py (no function)   100% 10 0 1   100% 0 0   100%
pyWebLayout/style/__init__.py (no function)   100% 6 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py FontSize.from_value   0% 11 11 1   0% 4 0   0%
pyWebLayout/style/abstract_style.py AbstractStyle.__post_init__   20% 5 4 1   50% 2 1   29%
pyWebLayout/style/abstract_style.py AbstractStyle.__hash__   100% 7 0 1   100% 2 0   100%
pyWebLayout/style/abstract_style.py AbstractStyle.merge_with   0% 5 5 1   100% 0 0   0%
pyWebLayout/style/abstract_style.py AbstractStyle.with_modifications   100% 3 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.__init__   100% 4 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry._create_default_style   100% 5 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.default_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry._generate_style_id   100% 3 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.get_style_id   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.register_style   88% 8 1 1   50% 4 2   75%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.get_or_create_style   90% 10 1 1   83% 6 1   88%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.get_style_by_id   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.create_derived_style   80% 5 1 1   50% 2 1   71%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.resolve_effective_style   57% 7 3 1   50% 4 2   55%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.get_all_styles   0% 1 1 1   100% 0 0   0%
pyWebLayout/style/abstract_style.py AbstractStyleRegistry.get_style_count   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/abstract_style.py (no function)   100% 57 0 5   100% 0 0   100%
pyWebLayout/style/alignment.py Alignment.__str__   0% 1 1 1   100% 0 0   0%
pyWebLayout/style/alignment.py (no function)   100% 10 0 2   100% 0 0   100%
pyWebLayout/style/concrete_style.py ConcreteStyle.create_font   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/concrete_style.py StyleResolver.__init__   100% 4 0 1   100% 0 0   100%
pyWebLayout/style/concrete_style.py StyleResolver.resolve_style   100% 26 0 1   100% 10 0   100%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_font_path   29% 7 5 1   17% 6 1   23%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_font_size   69% 13 4 1   83% 6 1   74%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_color   59% 27 11 1   56% 16 5   58%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_background_color   17% 12 10 1   10% 10 1   14%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_line_height   20% 10 8 1   17% 6 1   19%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_letter_spacing   12% 16 14 1   12% 8 1   12%
pyWebLayout/style/concrete_style.py StyleResolver._resolve_word_spacing   56% 16 7 1   75% 8 2   62%
pyWebLayout/style/concrete_style.py StyleResolver.update_context   0% 4 4 1   100% 0 0   0%
pyWebLayout/style/concrete_style.py StyleResolver.clear_cache   0% 1 1 1   100% 0 0   0%
pyWebLayout/style/concrete_style.py StyleResolver.get_cache_size   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/concrete_style.py ConcreteStyleRegistry.__init__   100% 2 0 1   100% 0 0   100%
pyWebLayout/style/concrete_style.py ConcreteStyleRegistry.get_concrete_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/concrete_style.py ConcreteStyleRegistry.get_font   100% 6 0 1   100% 2 0   100%
pyWebLayout/style/concrete_style.py ConcreteStyleRegistry.clear_caches   0% 2 2 1   100% 0 0   0%
pyWebLayout/style/concrete_style.py ConcreteStyleRegistry.get_cache_stats   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/concrete_style.py (no function)   100% 57 0 5   100% 0 0   100%
pyWebLayout/style/fonts.py get_bundled_fonts_dir   0% 11 11 1   0% 4 0   0%
pyWebLayout/style/fonts.py get_bundled_font_path   0% 25 25 1   0% 16 0   0%
pyWebLayout/style/fonts.py Font.__init__   100% 10 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.from_family   0% 2 2 1   100% 0 0   0%
pyWebLayout/style/fonts.py Font._get_bundled_font_path   81% 16 3 1   75% 4 1   80%
pyWebLayout/style/fonts.py Font._load_font   88% 25 3 1   88% 8 1   88%
pyWebLayout/style/fonts.py Font.font   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.font_size   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.colour   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.color   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.background   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.weight   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.style   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.decoration   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.min_hyphenation_width   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font._with_modified   100% 3 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.with_size   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.with_colour   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.with_weight   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.with_style   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py Font.with_decoration   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/fonts.py (no function)   100% 55 0 2   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.padding_top   100% 1 0 0   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.padding_right   100% 1 0 0   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.padding_bottom   100% 1 0 0   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.padding_left   100% 1 0 0   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.total_horizontal_padding   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.total_vertical_padding   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/page_style.py PageStyle.total_border_width   100% 1 0 1   100% 0 0   100%
pyWebLayout/style/page_style.py (no function)   100% 28 0 1   100% 0 0   100%
Total     85% 5525 847 802   71% 1628 225   82%

No items found using the specified filter.