athena-python-docx 0.11.0__tar.gz → 0.11.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/CLAUDE.md +12 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/PKG-INFO +1 -1
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/__init__.py +1 -1
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_http_doc.py +25 -10
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/errors.py +22 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/table.py +72 -53
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/pyproject.toml +1 -1
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/complex_cases.py +15 -37
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/extreme_cases.py +3 -12
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/22_table_cell_paragraphs_iteration.json +3 -1
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/62_many_cell_paragraphs.json +15 -5
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/69_newsletter.json +13 -5
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/90_cell_add_paragraph_styled.json +3 -1
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex13_cell_with_10_paragraphs.json +30 -10
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega01_book_chapter.json +18 -6
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/real_world_cases.py +4 -13
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_block_not_found_error.py +69 -0
- athena_python_docx-0.11.2/tests/test_cell_add_paragraph_wire_shape.py +133 -0
- athena_python_docx-0.11.2/tests/test_cell_add_table_not_supported.py +79 -0
- athena_python_docx-0.11.0/tests/fidelity/op_snapshots/103_cell_tables_enumeration.json +0 -14
- athena_python_docx-0.11.0/tests/fidelity/op_snapshots/23_nested_table.json +0 -9
- athena_python_docx-0.11.0/tests/fidelity/op_snapshots/51_nested_tables_deep.json +0 -14
- athena_python_docx-0.11.0/tests/fidelity/op_snapshots/ex01_five_levels_deep_tables.json +0 -24
- athena_python_docx-0.11.0/tests/fidelity/op_snapshots/rw14_nested_cell_table.json +0 -10
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/.gitignore +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/README.md +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_athena_extension.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_batching.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_buffer.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_http.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_image_utils.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_ptc.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/_table_styles.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/api.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/bookmarks.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/charts.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/client.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/commands.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/comments.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/document.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/enum/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/enum/section.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/enum/style.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/enum/table.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/enum/text.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/exceptions.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/fields.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/footnotes.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/math.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/opc/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/opc/coreprops.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/oxml/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/revisions.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/sdt.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/section.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/settings.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/shape.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/shared.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/styles/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/styles/style.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/styles/styles.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/font.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/hyperlink.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/pagebreak.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/paragraph.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/parfmt.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/run.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/text/tabstops.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/toc.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/docx/typing.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/scripts/publish.sh +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/scripts/release.sh +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/scripts/round_trip_smoke.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/scripts/smoke_test_block_not_found.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/conftest.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/METHODOLOGY.md +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/README.md +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/ab_probe_cases.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/ab_probe_runner.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/auto_gen_cases.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/binary_round_trip.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/cases.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/coverage_report.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/extract.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/fake_session.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/firm_templates/README.md +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/firm_templates/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/firm_templates/_runner.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/firm_templates/extractor.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/firm_templates/test_pw_corpus.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/firm_templates/test_pw_research_digest.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/local_runner.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/mega_cases.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshot.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/01_basic_paragraph.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/02_multiple_headings.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/03_runs_with_formatting.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/04_font_name_and_size.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/05_font_color_rgb.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/06_font_character_properties.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/07_font_subscript_superscript.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/08_font_highlight.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/09_paragraph_alignment.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/100_table_negative_indexing.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/101_table_cells_flat_iteration.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/102_text_with_embedded_special_chars.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/104_core_properties_datetime.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/105_default_one_section.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/106_heading_paragraph_format.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/107_varying_row_heights.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/10_paragraph_indents.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/11_paragraph_spacing.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/12_paragraph_keep_options.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/13_paragraph_tab_stops.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/14_run_add_tab_and_break.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/15_run_add_break_page.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/16_paragraph_clear_and_insert_before.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/17_table_basic.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/18_table_cell_text.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/19_table_row_column_sizing.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/20_table_cell_vertical_alignment.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/21_table_alignment_and_autofit.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/24_table_add_row_column.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/25_table_merge_cells.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/26_section_page_setup.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/27_section_margins.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/28_section_add_new.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/29_section_headers_linked.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/30_styles_iteration.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/31_styles_lookup_and_default.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/32_styles_add_paragraph_style.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/33_core_properties_set_and_get.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/34_inline_shapes_iterate_empty.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/35_full_report.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/36_replace_text_in_paragraph.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/37_iterate_runs_and_format_all_bold.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/38_font_all_properties.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/39_large_body_100_paragraphs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/40_large_table_10x10.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/41_unicode_and_emoji.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/42_very_long_paragraph.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/43_paragraph_text_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/44_paragraph_alignment_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/45_cell_text_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/46_run_text_setter_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/47_font_size_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/48_font_color_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/49_resume_layout.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/50_multi_section_doc.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/52_iterate_everything.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/53_apply_style_to_paragraphs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/54_empty_everything.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/55_single_character_runs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/56_everything_in_one.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/57_runs_after_multiple_text_appends.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/58_modify_runs_in_place.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/59_indent_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/60_space_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/61_cell_paragraph_with_runs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/63_table_style_round_trip.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/64_many_sections.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/65_20x20_table_formatted.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/66_toc_like_structure.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/67_paragraph_insert_before_chain.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/68_invoice.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/70_add_and_iterate_back.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/71_academic_paper.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/72_legal_contract.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/73_form_with_many_tables.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/74_paragraph_with_10_runs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/75_paragraph_negative_first_line_indent.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/76_rgbcolor_from_string.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/77_length_unit_conversions.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/78_paragraph_copy_style.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/79_bulk_cell_formatting.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/80_apply_style_after_add_run.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/81_multi_page_with_breaks.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/82_add_text_on_existing_run.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/83_clear_then_repopulate_paragraph.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/84_table_reread_row_count.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/85_header_footer_access.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/86_font_read_unset_returns_none.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/87_500_paragraph_doc.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/88_mixed_content_iteration.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/89_alignment_clear_via_none.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/91_many_small_tables.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/92_margins_every_section.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/93_font_bool_reads_after_set.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/94_page_break_before_paragraph.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/95_paragraph_hyperlinks_empty.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/96_paragraph_contains_page_break.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/97_document_styles_by_key.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/98_style_contains_check.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/99_run_add_picture_from_bytes.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex02_unicode_everywhere.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex03_1000_paragraphs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex04_50x50_table.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex05_long_text_in_cell.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex06_hundred_tiny_runs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex07_every_font_boolean.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex08_many_continuous_sections.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex09_many_tab_stops.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex10_complex_bom.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex11_banded_rows_formatting.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex12_section_reconfigure.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex14_styled_report_table.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex15_paragraph_all_format_props.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex16_runs_interleaved_with_breaks.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex17_all_break_kinds.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex18_read_back_large_doc.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex19_mutate_all_runs.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/ex20_kitchen_sink_v2.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega02_research_proposal.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega03_financial_statement.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega04_recipe_card.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega05_user_manual.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega06_complex_newsletter.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega07_budget_spreadsheet.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega08_product_catalog.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega09_signed_contract.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/mega10_api_documentation.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw01_official_quickstart.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw02_paragraph_style_list.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw03_character_formatting.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw04_section_page_setup.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw05_toc_pattern.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw06_meeting_minutes.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw07_dense_formatting_demo.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw08_table_merged_header.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw09_bulk_run_iteration.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw10_colored_grid_table.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw11_header_text.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw12_first_page_footer.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw13_even_page_header.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/op_snapshots/rw15_paragraph_style_instance.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/ours_spec.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/parity_crawl.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/parity_diff.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/round_trip_tests.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/runner.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/stock_spec.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/fidelity/test_e2e_against_staging.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/README.md +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/__init__.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/baseline_gaps.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/compare.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/intentional_deviations.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/introspect.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/reports/GAP_ANALYSIS.md +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/reports/gap_report.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/run_parity.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/snapshots/athena_latest.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/snapshots/upstream_python_docx_1.2.0.json +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/parity/test_parity_gap.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_athena_extensions_contract.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_athena_extensions_registry.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_batching_perf.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_buffer.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_cell_text_plain_fastpath.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_collapsed_range_format.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_command_dataclasses.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_commands.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_comments.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_document_asset_id_property.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_document_create.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_document_create_from_template.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_document_factory_validation.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_e2e_partial_failure_cascade.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_http_transport.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_hyperlink_coalescing.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_insert_deferred.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_iter_inner_content.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_list_styles.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_merged_cell_secondary_slot.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_merged_cells.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_oxml_shim.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_paragraph_text_len_cache.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_parity_misc.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_parity_round2.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_partial_failure_cascade.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_phase_a_behavior.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_phase_b_headers_footers.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_phase_c_tables.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_pr19766_review_fixes.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_ptc.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_python_docx_api_parity.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_revisions.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_add_paragraph_style.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_add_picture.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_add_run.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_cell_add_paragraph.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_comments_add_comment.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_comments_get.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_document_audit.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_document_element.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_enum_section.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_font_audit.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_header_footer.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_hyperlink.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_inline_shape.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_insert_paragraph_before.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_misc.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_paragraph_strict.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_paragraph_style.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_paragraph_style_strict.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_parfmt.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_row_col_cell.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_run_add_break.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_run_bool_setters.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_run_style.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_run_style_strict.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_run_text.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_run_underline.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_section_audit.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_section_dimensions.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_section_onoff.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_settings.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_shared_audit.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_style.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_styles.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_table_audit.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_table_cell.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_table_dimensions.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_silent_stub_table_layout.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_smoke_integration.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_style_acceptance.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_style_font.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_style_setters_contract.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_table_set_cell_perf.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_table_style_id_resolution.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_temporarily_unavailable.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_wire_contract.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/tests/test_zod_wire_contract.py +0 -0
- {athena_python_docx-0.11.0 → athena_python_docx-0.11.2}/uv.lock +0 -0
|
@@ -39,6 +39,18 @@ These standard python-docx members don't apply to a Superdoc-backed SDK:
|
|
|
39
39
|
`Comment.tables` — SuperDoc models a comment as a single text body,
|
|
40
40
|
not a `BlockItemContainer`. Use `Comment.text` instead. The
|
|
41
41
|
paragraph/table-bearing surface raises `CommentsNotImplementedError`.
|
|
42
|
+
- **`_Cell.add_table(rows, cols)`** — surface preserved for parity
|
|
43
|
+
(signature matches python-docx, no `width` kwarg) but raises
|
|
44
|
+
:class:`docx.errors.NestedTableNotSupportedError` (subclass of
|
|
45
|
+
`NotImplementedError`) at runtime since 0.11.2. SuperDoc 1.8.1 has
|
|
46
|
+
no anchor or content-fragment shape that places a new table inside
|
|
47
|
+
an existing `tableCell` — `create.table` rejects cell-inner
|
|
48
|
+
paragraph anchors with `INVALID_TARGET`, and the `doc.insert`
|
|
49
|
+
workaround used by `_Cell.add_paragraph` doesn't generalize
|
|
50
|
+
because the apps/api `Insert` schema doesn't yet forward
|
|
51
|
+
`nestingPolicy: {tables: "allow"}` and the SuperDoc table-content
|
|
52
|
+
fragment shape isn't documented. Tracked at
|
|
53
|
+
`docx-studio/SUPERDOC_UPSTREAM_REQUESTS.md` § 13.
|
|
42
54
|
- **`docx.oxml.*`** — the entire raw-OOXML module tree (``ns.qn``,
|
|
43
55
|
``OxmlElement``, ``CT_*`` classes, etc.) is unavailable because the
|
|
44
56
|
SDK is HTTP-only against a SuperDoc Y.Doc; there is no local lxml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: athena-python-docx
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.2
|
|
4
4
|
Summary: Drop-in replacement for python-docx that connects to Athena's Superdoc/Keryx collaborative document stack
|
|
5
5
|
Project-URL: Homepage, https://athenaintelligence.ai
|
|
6
6
|
Author-email: Athena Intelligence <engineering@athenaintelligence.ai>
|
|
@@ -186,22 +186,32 @@ _NOT_FOUND_ERROR_NAMES: frozenset[str] = frozenset(
|
|
|
186
186
|
|
|
187
187
|
|
|
188
188
|
def _looks_like_block_not_found(err_obj: dict) -> bool:
|
|
189
|
-
"""Detect SuperDoc's
|
|
189
|
+
"""Detect SuperDoc's cell-inner-paragraph addressing failures.
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
SuperDoc emits two shapes for the same underlying gap
|
|
192
|
+
(``SUPERDOC_UPSTREAM_REQUESTS.md`` § 13):
|
|
193
|
+
|
|
194
|
+
* ``Block "paragraph:<uuid>" was not found.`` — older "not found" form.
|
|
195
|
+
* ``INVALID_TARGET - Expected paragraph:<uuid> but found tableCell:<id>.``
|
|
196
|
+
— newer type-mismatch form, surfaced when the supplied paragraph
|
|
197
|
+
anchor resolves to its containing ``tableCell`` instead.
|
|
198
|
+
|
|
199
|
+
Both surface as :class:`BlockNotFoundError` so agent code can route
|
|
200
|
+
them through the same cell-paragraph hint path.
|
|
195
201
|
"""
|
|
196
202
|
msg = err_obj.get("message")
|
|
197
203
|
if not isinstance(msg, str):
|
|
198
204
|
return False
|
|
199
205
|
lower = msg.lower()
|
|
200
|
-
if "not found"
|
|
201
|
-
return
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
206
|
+
if "not found" in lower:
|
|
207
|
+
return 'block "' in lower or (
|
|
208
|
+
'block ' in lower and ' was not found' in lower
|
|
209
|
+
)
|
|
210
|
+
if "invalid_target" in lower or "invalid target" in lower:
|
|
211
|
+
# "Expected paragraph:<id> but found tableCell:<id>" — the new
|
|
212
|
+
# variant of the § 13 cell-inner-paragraph addressing gap.
|
|
213
|
+
return "but found tablecell" in lower
|
|
214
|
+
return False
|
|
205
215
|
|
|
206
216
|
|
|
207
217
|
# Commands that target a paragraph block (or its inline range) and
|
|
@@ -239,6 +249,11 @@ _PARAGRAPH_TARGETING_COMMANDS: frozenset[str] = frozenset(
|
|
|
239
249
|
"Replace",
|
|
240
250
|
"InsertLineBreak",
|
|
241
251
|
"InsertTab",
|
|
252
|
+
# Create-* anchor-into-cell-inner-paragraph variant of § 13.
|
|
253
|
+
"CreateParagraph",
|
|
254
|
+
"CreateHeading",
|
|
255
|
+
"CreateTable",
|
|
256
|
+
"CreateImage",
|
|
242
257
|
}
|
|
243
258
|
)
|
|
244
259
|
|
|
@@ -128,6 +128,28 @@ class LocalSaveTargetNotSupportedError(DocxError, NotImplementedError):
|
|
|
128
128
|
"""
|
|
129
129
|
|
|
130
130
|
|
|
131
|
+
class NestedTableNotSupportedError(DocxError, NotImplementedError):
|
|
132
|
+
"""Raised when ``_Cell.add_table(...)`` is called.
|
|
133
|
+
|
|
134
|
+
SuperDoc 1.8.1 cannot place a new top-level block inside an
|
|
135
|
+
existing ``tableCell`` — ``create.table`` rejects a cell-inner
|
|
136
|
+
paragraph anchor with ``INVALID_TARGET - Expected paragraph:<id>
|
|
137
|
+
but found tableCell:<id>``, and there is no ``create.table``
|
|
138
|
+
anchor shape ("inside this cell") that addresses cell content
|
|
139
|
+
directly. The ``doc.insert``-based workaround used by
|
|
140
|
+
``_Cell.text`` / ``_Cell.add_paragraph`` requires a
|
|
141
|
+
``nestingPolicy: {tables: "allow"}`` flag and a table content
|
|
142
|
+
fragment that aren't yet plumbed through the docx-studio command
|
|
143
|
+
bus, so this entire method is unsupported until upstream
|
|
144
|
+
SuperDoc lands the cell-inner addressing fix tracked in
|
|
145
|
+
``docx-studio/SUPERDOC_UPSTREAM_REQUESTS.md`` § 13.
|
|
146
|
+
|
|
147
|
+
Subclasses :class:`NotImplementedError` so a generic
|
|
148
|
+
``except NotImplementedError`` catches it without importing the
|
|
149
|
+
typed class.
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
|
|
131
153
|
class ValidationError(DocxError):
|
|
132
154
|
"""Raised when SDK-level validation fails (bad args, out-of-range indices)."""
|
|
133
155
|
|
|
@@ -1345,23 +1345,24 @@ class _Cell:
|
|
|
1345
1345
|
only ``str`` was honored and passing a ``ParagraphStyle`` got
|
|
1346
1346
|
``repr()``'d into the style id slot, silently producing a
|
|
1347
1347
|
paragraph with a garbage style reference.
|
|
1348
|
+
|
|
1349
|
+
Routes through ``doc.insert`` with the cell itself as the
|
|
1350
|
+
target and ``placement: 'insideEnd'`` — mirroring the wire
|
|
1351
|
+
path that ``_Cell.text`` uses. SuperDoc 1.8.1 cannot resolve a
|
|
1352
|
+
``create.paragraph`` ``at`` anchor that points at a cell-inner
|
|
1353
|
+
paragraph (SUPERDOC_UPSTREAM_REQUESTS.md § 13); attempting it
|
|
1354
|
+
raises ``INVALID_TARGET - Expected paragraph:<id> but found
|
|
1355
|
+
tableCell:<id>``.
|
|
1348
1356
|
"""
|
|
1349
1357
|
from docx.document import _extract_inserted_node_id
|
|
1350
1358
|
from docx.styles.style import ParagraphStyle
|
|
1351
1359
|
from docx.text.paragraph import Paragraph
|
|
1352
1360
|
|
|
1353
|
-
# python-docx 1.x: ``text`` is ``str`` (lxml TypeErrors on
|
|
1354
|
-
# non-str). Was: any value flowed straight to the wire
|
|
1355
|
-
# ``text`` field — SuperDoc's permissive parser swallowed or
|
|
1356
|
-
# rejected silently.
|
|
1357
1361
|
if not isinstance(text, str):
|
|
1358
1362
|
raise TypeError(
|
|
1359
1363
|
f"_Cell.add_paragraph text requires str; got "
|
|
1360
1364
|
f"{type(text).__name__} {text!r}",
|
|
1361
1365
|
)
|
|
1362
|
-
# ``style`` is ``str | ParagraphStyle | None``. Was: catch-all
|
|
1363
|
-
# ``str(style)`` shipped garbage like ``"<MyStyle object at
|
|
1364
|
-
# 0x...>"`` as a style id — Word silently fell back to Normal.
|
|
1365
1366
|
style_id: str | None
|
|
1366
1367
|
if style is None:
|
|
1367
1368
|
style_id = None
|
|
@@ -1376,38 +1377,49 @@ class _Cell:
|
|
|
1376
1377
|
f"{type(style).__name__} {style!r}",
|
|
1377
1378
|
)
|
|
1378
1379
|
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
"
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
else:
|
|
1390
|
-
# No paragraphs yet — create one inside the cell (sibling of cell
|
|
1391
|
-
# is invalid; fall back to documentEnd and accept degraded placement).
|
|
1392
|
-
anchor = {"kind": "documentEnd"}
|
|
1380
|
+
fragment: dict = {
|
|
1381
|
+
"kind": "paragraph",
|
|
1382
|
+
"paragraph": {
|
|
1383
|
+
"inlines": (
|
|
1384
|
+
[{"kind": "run", "run": {"text": text}}]
|
|
1385
|
+
if text
|
|
1386
|
+
else []
|
|
1387
|
+
),
|
|
1388
|
+
},
|
|
1389
|
+
}
|
|
1393
1390
|
|
|
1391
|
+
session = self._table._session
|
|
1392
|
+
cell_id = self._cell_id()
|
|
1394
1393
|
result: object = run_sync(
|
|
1395
|
-
|
|
1396
|
-
{
|
|
1394
|
+
session.doc.insert(
|
|
1395
|
+
{
|
|
1396
|
+
"target": {
|
|
1397
|
+
"kind": "block",
|
|
1398
|
+
"nodeType": "tableCell",
|
|
1399
|
+
"nodeId": cell_id,
|
|
1400
|
+
},
|
|
1401
|
+
"placement": "insideEnd",
|
|
1402
|
+
"content": fragment,
|
|
1403
|
+
},
|
|
1397
1404
|
),
|
|
1398
1405
|
)
|
|
1406
|
+
|
|
1407
|
+
node_id: str = ""
|
|
1399
1408
|
if isinstance(result, dict):
|
|
1400
|
-
node_id
|
|
1409
|
+
node_id = _extract_inserted_node_id(
|
|
1401
1410
|
result, expected_type="paragraph",
|
|
1402
1411
|
)
|
|
1403
|
-
|
|
1404
|
-
|
|
1412
|
+
if not node_id:
|
|
1413
|
+
ids = self._inner_paragraph_ids()
|
|
1414
|
+
if ids:
|
|
1415
|
+
node_id = ids[-1]
|
|
1405
1416
|
if not node_id:
|
|
1406
1417
|
raise RuntimeError(
|
|
1407
|
-
f"
|
|
1418
|
+
f"docx-studio did not return nodeId for "
|
|
1419
|
+
f"_Cell.add_paragraph (cell={cell_id!r}): {result!r}",
|
|
1408
1420
|
)
|
|
1409
1421
|
para = Paragraph(
|
|
1410
|
-
session=
|
|
1422
|
+
session=session,
|
|
1411
1423
|
node_id=node_id,
|
|
1412
1424
|
node_type="paragraph",
|
|
1413
1425
|
)
|
|
@@ -1418,40 +1430,47 @@ class _Cell:
|
|
|
1418
1430
|
def add_table(self, rows: int, cols: int) -> Table:
|
|
1419
1431
|
"""Append a nested table inside the cell.
|
|
1420
1432
|
|
|
1421
|
-
Mirrors python-docx ``_Cell.add_table(rows, cols) -> Table
|
|
1433
|
+
Mirrors python-docx ``_Cell.add_table(rows, cols) -> Table``
|
|
1434
|
+
at the API surface, but raises
|
|
1435
|
+
:class:`docx.errors.NestedTableNotSupportedError` at runtime
|
|
1436
|
+
— SuperDoc 1.8.1 has no addressable shape for "create table
|
|
1437
|
+
inside this cell" (every available anchor either targets a
|
|
1438
|
+
cell-inner paragraph SuperDoc can't resolve, or promotes the
|
|
1439
|
+
new block to the cell's parent row level). The unblock is
|
|
1440
|
+
tracked at ``docx-studio/SUPERDOC_UPSTREAM_REQUESTS.md`` § 13;
|
|
1441
|
+
the same gap was the proximate cause of the
|
|
1442
|
+
``_Cell.add_paragraph`` failure fixed in 0.11.1 (#20745), and
|
|
1443
|
+
that fix worked only because ``doc.insert`` accepts a paragraph
|
|
1444
|
+
content fragment against a ``tableCell`` target — there is no
|
|
1445
|
+
analogous table-content fragment path through the current
|
|
1446
|
+
docx-studio command bus.
|
|
1447
|
+
|
|
1448
|
+
``rows`` and ``cols`` are still validated upfront so callers
|
|
1449
|
+
get the same ``ValidationError`` they would have hit before, in
|
|
1450
|
+
case they were branching on it.
|
|
1451
|
+
|
|
1422
1452
|
Note that upstream's ``_Cell.add_table`` does not take a
|
|
1423
1453
|
``width`` parameter — Word inherits cell-table widths from
|
|
1424
1454
|
layout. ``Document.add_table`` and ``Section.header.add_table``
|
|
1425
1455
|
DO take ``width`` because they're block-level.
|
|
1426
1456
|
"""
|
|
1427
|
-
from docx.
|
|
1457
|
+
from docx.errors import NestedTableNotSupportedError
|
|
1428
1458
|
|
|
1429
1459
|
if rows < 1 or cols < 1:
|
|
1430
1460
|
raise ValidationError(f"rows/cols must be >=1; got {rows}/{cols}")
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
anchor
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
anchor = {"kind": "documentEnd"}
|
|
1444
|
-
result: object = run_sync(
|
|
1445
|
-
self._table._session.doc.create.table(
|
|
1446
|
-
{"rows": rows, "columns": cols, "at": anchor},
|
|
1447
|
-
),
|
|
1461
|
+
raise NestedTableNotSupportedError(
|
|
1462
|
+
"_Cell.add_table is unsupported on SuperDoc 1.8.1. The cell "
|
|
1463
|
+
"addressing gap (SUPERDOC_UPSTREAM_REQUESTS.md § 13) means "
|
|
1464
|
+
"no anchor or content-fragment shape currently lets the SDK "
|
|
1465
|
+
"place a new table inside an existing tableCell. Workarounds: "
|
|
1466
|
+
"(a) build the table at document or section level via "
|
|
1467
|
+
"Document.add_table and reference it from cell text, or "
|
|
1468
|
+
"(b) include the nested table in the original template "
|
|
1469
|
+
"document and address its cells directly. This method will "
|
|
1470
|
+
"be reinstated once SuperDoc exposes either recursive "
|
|
1471
|
+
"paragraph-anchor lookup or a cell-scoped create.table "
|
|
1472
|
+
"variant.",
|
|
1448
1473
|
)
|
|
1449
|
-
node_id: str = _extract_inserted_node_id(result, expected_type="table") if isinstance(result, dict) else ""
|
|
1450
|
-
if not node_id:
|
|
1451
|
-
raise RuntimeError(
|
|
1452
|
-
f"Superdoc did not return nodeId for nested table: {result!r}",
|
|
1453
|
-
)
|
|
1454
|
-
return Table(session=self._table._session, node_id=node_id)
|
|
1455
1474
|
|
|
1456
1475
|
def merge(self, other_cell: "_Cell") -> "_Cell":
|
|
1457
1476
|
"""Return a merged cell created by spanning the rectangular
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "athena-python-docx"
|
|
7
|
-
version = "0.11.
|
|
7
|
+
version = "0.11.2"
|
|
8
8
|
description = "Drop-in replacement for python-docx that connects to Athena's Superdoc/Keryx collaborative document stack"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -319,18 +319,15 @@ CASES: list[ComplexCase] = [
|
|
|
319
319
|
expected_ops=("tables.getCells", "create.paragraph"),
|
|
320
320
|
tags=("level5", "table"),
|
|
321
321
|
),
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
expected_ops=("create.table",),
|
|
332
|
-
tags=("level5", "table", "nested"),
|
|
333
|
-
),
|
|
322
|
+
# Removed in 0.11.2 (#20745 follow-up): ``_Cell.add_table`` now
|
|
323
|
+
# raises ``NestedTableNotSupportedError`` because SuperDoc 1.8.1
|
|
324
|
+
# has no addressable shape for "create new table inside this cell"
|
|
325
|
+
# — every available anchor either targets a cell-inner paragraph
|
|
326
|
+
# SuperDoc can't resolve or promotes the new block to the cell's
|
|
327
|
+
# parent row. Tracked at SUPERDOC_UPSTREAM_REQUESTS.md § 13. Pre-
|
|
328
|
+
# 0.11.2 this case "passed" by silently writing the nested table
|
|
329
|
+
# to documentEnd, which round-tripped in the fake but is wrong in
|
|
330
|
+
# production. See tests/test_cell_add_table_not_supported.py.
|
|
334
331
|
ComplexCase(
|
|
335
332
|
name="24_table_add_row_column",
|
|
336
333
|
description="Add row and column dynamically (python-docx 1.x requires width for add_column)",
|
|
@@ -745,17 +742,9 @@ CASES: list[ComplexCase] = [
|
|
|
745
742
|
),
|
|
746
743
|
|
|
747
744
|
# ---------- Level 17: deep nesting + iteration ----------
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
script=(
|
|
752
|
-
"outer = doc.add_table(rows=1, cols=1)\n"
|
|
753
|
-
"mid = outer.cell(0, 0).add_table(rows=1, cols=1)\n"
|
|
754
|
-
"inner = mid.cell(0, 0).add_table(rows=2, cols=2)\n"
|
|
755
|
-
'inner.cell(0, 0).text = "deepest"'
|
|
756
|
-
),
|
|
757
|
-
tags=("level17", "nested"),
|
|
758
|
-
),
|
|
745
|
+
# 51_nested_tables_deep removed in 0.11.2 (#20745 follow-up):
|
|
746
|
+
# _Cell.add_table now raises NestedTableNotSupportedError on
|
|
747
|
+
# SuperDoc 1.8.1; see SUPERDOC_UPSTREAM_REQUESTS.md § 13.
|
|
759
748
|
ComplexCase(
|
|
760
749
|
name="52_iterate_everything",
|
|
761
750
|
description="Create a doc then iterate sections/paragraphs/tables",
|
|
@@ -1784,20 +1773,9 @@ CASES: list[ComplexCase] = [
|
|
|
1784
1773
|
),
|
|
1785
1774
|
|
|
1786
1775
|
# ---------- Level 56: cell.tables for nested detection ----------
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
script=(
|
|
1791
|
-
"outer = doc.add_table(rows=1, cols=1)\n"
|
|
1792
|
-
"c = outer.cell(0, 0)\n"
|
|
1793
|
-
"c.add_table(rows=2, cols=2)\n"
|
|
1794
|
-
"c.add_table(rows=1, cols=1)\n"
|
|
1795
|
-
"# cell.tables should list nested tables\n"
|
|
1796
|
-
"nested = c.tables\n"
|
|
1797
|
-
"# don't assert exact count — fake may not fully reflect"
|
|
1798
|
-
),
|
|
1799
|
-
tags=("level56", "nested"),
|
|
1800
|
-
),
|
|
1776
|
+
# 103_cell_tables_enumeration removed in 0.11.2 (#20745 follow-up):
|
|
1777
|
+
# _Cell.add_table raises NestedTableNotSupportedError; see
|
|
1778
|
+
# SUPERDOC_UPSTREAM_REQUESTS.md § 13.
|
|
1801
1779
|
|
|
1802
1780
|
# ---------- Level 57: core properties pull in datetime ----------
|
|
1803
1781
|
ComplexCase(
|
|
@@ -11,18 +11,9 @@ from tests.fidelity.complex_cases import ComplexCase
|
|
|
11
11
|
|
|
12
12
|
EXTREME_CASES: list[ComplexCase] = [
|
|
13
13
|
# ---- Deep nesting ----
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
script=(
|
|
18
|
-
"current = doc.add_table(rows=1, cols=1).cell(0, 0)\n"
|
|
19
|
-
"for i in range(4):\n"
|
|
20
|
-
" nested = current.add_table(rows=1, cols=1)\n"
|
|
21
|
-
" current = nested.cell(0, 0)\n"
|
|
22
|
-
"current.text = 'deepest'"
|
|
23
|
-
),
|
|
24
|
-
tags=("extreme", "nested"),
|
|
25
|
-
),
|
|
14
|
+
# ex01_five_levels_deep_tables removed in 0.11.2 (#20745 follow-up):
|
|
15
|
+
# _Cell.add_table raises NestedTableNotSupportedError on SuperDoc
|
|
16
|
+
# 1.8.1; see SUPERDOC_UPSTREAM_REQUESTS.md § 13.
|
|
26
17
|
|
|
27
18
|
# ---- Unicode stress ----
|
|
28
19
|
ComplexCase(
|
|
@@ -2,24 +2,34 @@
|
|
|
2
2
|
"create.table",
|
|
3
3
|
"tables.get",
|
|
4
4
|
"tables.getCells",
|
|
5
|
+
"insert",
|
|
6
|
+
"tables.get",
|
|
7
|
+
"tables.getCells",
|
|
5
8
|
"getNodeById",
|
|
6
|
-
"
|
|
9
|
+
"tables.get",
|
|
10
|
+
"tables.getCells",
|
|
11
|
+
"insert",
|
|
7
12
|
"tables.get",
|
|
8
13
|
"tables.getCells",
|
|
9
14
|
"getNodeById",
|
|
10
|
-
"
|
|
15
|
+
"tables.get",
|
|
16
|
+
"tables.getCells",
|
|
17
|
+
"insert",
|
|
11
18
|
"tables.get",
|
|
12
19
|
"tables.getCells",
|
|
13
20
|
"getNodeById",
|
|
14
|
-
"
|
|
21
|
+
"tables.get",
|
|
22
|
+
"tables.getCells",
|
|
23
|
+
"insert",
|
|
15
24
|
"tables.get",
|
|
16
25
|
"tables.getCells",
|
|
17
26
|
"getNodeById",
|
|
18
|
-
"
|
|
27
|
+
"tables.get",
|
|
28
|
+
"tables.getCells",
|
|
29
|
+
"insert",
|
|
19
30
|
"tables.get",
|
|
20
31
|
"tables.getCells",
|
|
21
32
|
"getNodeById",
|
|
22
|
-
"create.paragraph",
|
|
23
33
|
"tables.get",
|
|
24
34
|
"tables.getCells",
|
|
25
35
|
"getNodeById",
|
|
@@ -38,20 +38,28 @@
|
|
|
38
38
|
"tables.setStyle",
|
|
39
39
|
"tables.get",
|
|
40
40
|
"tables.getCells",
|
|
41
|
+
"insert",
|
|
42
|
+
"tables.get",
|
|
43
|
+
"tables.getCells",
|
|
41
44
|
"getNodeById",
|
|
42
|
-
"create.paragraph",
|
|
43
45
|
"getNodeById",
|
|
44
46
|
"format.apply",
|
|
45
47
|
"tables.get",
|
|
46
48
|
"tables.getCells",
|
|
47
|
-
"
|
|
48
|
-
"create.paragraph",
|
|
49
|
+
"insert",
|
|
49
50
|
"tables.get",
|
|
50
51
|
"tables.getCells",
|
|
51
52
|
"getNodeById",
|
|
52
|
-
"
|
|
53
|
+
"tables.get",
|
|
54
|
+
"tables.getCells",
|
|
55
|
+
"insert",
|
|
53
56
|
"tables.get",
|
|
54
57
|
"tables.getCells",
|
|
55
58
|
"getNodeById",
|
|
56
|
-
"
|
|
59
|
+
"tables.get",
|
|
60
|
+
"tables.getCells",
|
|
61
|
+
"insert",
|
|
62
|
+
"tables.get",
|
|
63
|
+
"tables.getCells",
|
|
64
|
+
"getNodeById"
|
|
57
65
|
]
|
|
@@ -3,52 +3,72 @@
|
|
|
3
3
|
"tables.setStyle",
|
|
4
4
|
"tables.get",
|
|
5
5
|
"tables.getCells",
|
|
6
|
+
"insert",
|
|
7
|
+
"tables.get",
|
|
8
|
+
"tables.getCells",
|
|
6
9
|
"getNodeById",
|
|
7
|
-
"create.paragraph",
|
|
8
10
|
"format.paragraph.setAlignment",
|
|
9
11
|
"tables.get",
|
|
10
12
|
"tables.getCells",
|
|
13
|
+
"insert",
|
|
14
|
+
"tables.get",
|
|
15
|
+
"tables.getCells",
|
|
11
16
|
"getNodeById",
|
|
12
|
-
"create.paragraph",
|
|
13
17
|
"format.paragraph.setAlignment",
|
|
14
18
|
"tables.get",
|
|
15
19
|
"tables.getCells",
|
|
20
|
+
"insert",
|
|
21
|
+
"tables.get",
|
|
22
|
+
"tables.getCells",
|
|
16
23
|
"getNodeById",
|
|
17
|
-
"create.paragraph",
|
|
18
24
|
"format.paragraph.setAlignment",
|
|
19
25
|
"tables.get",
|
|
20
26
|
"tables.getCells",
|
|
27
|
+
"insert",
|
|
28
|
+
"tables.get",
|
|
29
|
+
"tables.getCells",
|
|
21
30
|
"getNodeById",
|
|
22
|
-
"create.paragraph",
|
|
23
31
|
"format.paragraph.setAlignment",
|
|
24
32
|
"tables.get",
|
|
25
33
|
"tables.getCells",
|
|
34
|
+
"insert",
|
|
35
|
+
"tables.get",
|
|
36
|
+
"tables.getCells",
|
|
26
37
|
"getNodeById",
|
|
27
|
-
"create.paragraph",
|
|
28
38
|
"format.paragraph.setAlignment",
|
|
29
39
|
"tables.get",
|
|
30
40
|
"tables.getCells",
|
|
41
|
+
"insert",
|
|
42
|
+
"tables.get",
|
|
43
|
+
"tables.getCells",
|
|
31
44
|
"getNodeById",
|
|
32
|
-
"create.paragraph",
|
|
33
45
|
"format.paragraph.setAlignment",
|
|
34
46
|
"tables.get",
|
|
35
47
|
"tables.getCells",
|
|
48
|
+
"insert",
|
|
49
|
+
"tables.get",
|
|
50
|
+
"tables.getCells",
|
|
36
51
|
"getNodeById",
|
|
37
|
-
"create.paragraph",
|
|
38
52
|
"format.paragraph.setAlignment",
|
|
39
53
|
"tables.get",
|
|
40
54
|
"tables.getCells",
|
|
55
|
+
"insert",
|
|
56
|
+
"tables.get",
|
|
57
|
+
"tables.getCells",
|
|
41
58
|
"getNodeById",
|
|
42
|
-
"create.paragraph",
|
|
43
59
|
"format.paragraph.setAlignment",
|
|
44
60
|
"tables.get",
|
|
45
61
|
"tables.getCells",
|
|
62
|
+
"insert",
|
|
63
|
+
"tables.get",
|
|
64
|
+
"tables.getCells",
|
|
46
65
|
"getNodeById",
|
|
47
|
-
"create.paragraph",
|
|
48
66
|
"format.paragraph.setAlignment",
|
|
49
67
|
"tables.get",
|
|
50
68
|
"tables.getCells",
|
|
69
|
+
"insert",
|
|
70
|
+
"tables.get",
|
|
71
|
+
"tables.getCells",
|
|
51
72
|
"getNodeById",
|
|
52
|
-
"create.paragraph",
|
|
53
73
|
"format.paragraph.setAlignment"
|
|
54
74
|
]
|
|
@@ -45,8 +45,10 @@
|
|
|
45
45
|
"tables.setCell",
|
|
46
46
|
"tables.get",
|
|
47
47
|
"tables.getCells",
|
|
48
|
+
"insert",
|
|
49
|
+
"tables.get",
|
|
50
|
+
"tables.getCells",
|
|
48
51
|
"getNodeById",
|
|
49
|
-
"create.paragraph",
|
|
50
52
|
"getNodeById",
|
|
51
53
|
"getNodeById",
|
|
52
54
|
"format.apply",
|
|
@@ -54,8 +56,10 @@
|
|
|
54
56
|
"format.apply",
|
|
55
57
|
"tables.get",
|
|
56
58
|
"tables.getCells",
|
|
59
|
+
"insert",
|
|
60
|
+
"tables.get",
|
|
61
|
+
"tables.getCells",
|
|
57
62
|
"getNodeById",
|
|
58
|
-
"create.paragraph",
|
|
59
63
|
"getNodeById",
|
|
60
64
|
"getNodeById",
|
|
61
65
|
"format.apply",
|
|
@@ -63,8 +67,10 @@
|
|
|
63
67
|
"format.apply",
|
|
64
68
|
"tables.get",
|
|
65
69
|
"tables.getCells",
|
|
70
|
+
"insert",
|
|
71
|
+
"tables.get",
|
|
72
|
+
"tables.getCells",
|
|
66
73
|
"getNodeById",
|
|
67
|
-
"create.paragraph",
|
|
68
74
|
"getNodeById",
|
|
69
75
|
"getNodeById",
|
|
70
76
|
"format.apply",
|
|
@@ -72,8 +78,10 @@
|
|
|
72
78
|
"format.apply",
|
|
73
79
|
"tables.get",
|
|
74
80
|
"tables.getCells",
|
|
81
|
+
"insert",
|
|
82
|
+
"tables.get",
|
|
83
|
+
"tables.getCells",
|
|
75
84
|
"getNodeById",
|
|
76
|
-
"create.paragraph",
|
|
77
85
|
"getNodeById",
|
|
78
86
|
"getNodeById",
|
|
79
87
|
"format.apply",
|
|
@@ -81,8 +89,10 @@
|
|
|
81
89
|
"format.apply",
|
|
82
90
|
"tables.get",
|
|
83
91
|
"tables.getCells",
|
|
92
|
+
"insert",
|
|
93
|
+
"tables.get",
|
|
94
|
+
"tables.getCells",
|
|
84
95
|
"getNodeById",
|
|
85
|
-
"create.paragraph",
|
|
86
96
|
"getNodeById",
|
|
87
97
|
"getNodeById",
|
|
88
98
|
"format.apply",
|
|
@@ -90,8 +100,10 @@
|
|
|
90
100
|
"format.apply",
|
|
91
101
|
"tables.get",
|
|
92
102
|
"tables.getCells",
|
|
103
|
+
"insert",
|
|
104
|
+
"tables.get",
|
|
105
|
+
"tables.getCells",
|
|
93
106
|
"getNodeById",
|
|
94
|
-
"create.paragraph",
|
|
95
107
|
"getNodeById",
|
|
96
108
|
"getNodeById",
|
|
97
109
|
"format.apply",
|