athena-python-docx 0.21.5__tar.gz → 0.21.6__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.21.5 → athena_python_docx-0.21.6}/PKG-INFO +1 -1
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/__init__.py +1 -1
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/run.py +16 -1
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/pyproject.toml +1 -1
- athena_python_docx-0.21.6/tests/test_run_add_picture_anchor.py +69 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/.gitignore +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/CLAUDE.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/DOCX_EXEC_LAB.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/README.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_athena_extension.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_batching.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_buffer.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_citations.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_execution.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_http.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_http_doc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_image_utils.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_postproc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_ptc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_references.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_table_styles.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/_timeouts.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/api.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/bookmarks.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/charts.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/client.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/commands.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/comments.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/document.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/enum/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/enum/section.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/enum/shape.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/enum/style.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/enum/table.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/enum/text.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/errors.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/exceptions.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/fields.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/footnotes.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/math.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/opc/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/opc/coreprops.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/oxml/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/revisions.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/sdt.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/section.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/session.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/settings.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/shape.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/shared.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/styles/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/styles/style.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/styles/styles.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/table.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/font.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/hyperlink.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/pagebreak.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/paragraph.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/parfmt.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/text/tabstops.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/toc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/docx/typing.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/docx_exec_lab.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/docx_exec_lab_examples/fast_table_fill.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/docx_exec_lab_examples/find_replace_literal.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/docx_exec_lab_server.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/dump_wire_fixtures.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/publish.sh +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/release.sh +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/round_trip_smoke.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/smoke_test_block_not_found.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/validate_find_replace_asset.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/conftest.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/METHODOLOGY.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/README.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/ab_probe_cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/ab_probe_runner.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/auto_gen_cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/binary_round_trip.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/complex_cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/coverage_report.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/extract.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/extreme_cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/fake_session.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/README.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/_runner.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/extractor.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/test_pw_corpus.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/test_pw_research_digest.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/local_runner.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/mega_cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshot.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/01_basic_paragraph.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/02_multiple_headings.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/03_runs_with_formatting.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/04_font_name_and_size.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/05_font_color_rgb.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/06_font_character_properties.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/07_font_subscript_superscript.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/08_font_highlight.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/09_paragraph_alignment.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/100_table_negative_indexing.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/101_table_cells_flat_iteration.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/102_text_with_embedded_special_chars.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/104_core_properties_datetime.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/105_default_one_section.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/106_heading_paragraph_format.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/107_varying_row_heights.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/10_paragraph_indents.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/11_paragraph_spacing.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/12_paragraph_keep_options.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/13_paragraph_tab_stops.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/14_run_add_tab_and_break.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/15_run_add_break_page.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/16_paragraph_clear_and_insert_before.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/17_table_basic.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/18_table_cell_text.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/19_table_row_column_sizing.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/20_table_cell_vertical_alignment.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/21_table_alignment_and_autofit.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/22_table_cell_paragraphs_iteration.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/24_table_add_row_column.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/25_table_merge_cells.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/26_section_page_setup.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/27_section_margins.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/28_section_add_new.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/29_section_headers_linked.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/30_styles_iteration.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/31_styles_lookup_and_default.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/32_styles_add_paragraph_style.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/33_core_properties_set_and_get.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/34_inline_shapes_iterate_empty.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/35_full_report.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/36_replace_text_in_paragraph.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/37_iterate_runs_and_format_all_bold.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/38_font_all_properties.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/39_large_body_100_paragraphs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/40_large_table_10x10.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/41_unicode_and_emoji.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/42_very_long_paragraph.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/43_paragraph_text_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/44_paragraph_alignment_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/45_cell_text_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/46_run_text_setter_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/47_font_size_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/48_font_color_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/49_resume_layout.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/50_multi_section_doc.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/52_iterate_everything.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/53_apply_style_to_paragraphs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/54_empty_everything.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/55_single_character_runs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/56_everything_in_one.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/57_runs_after_multiple_text_appends.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/58_modify_runs_in_place.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/59_indent_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/60_space_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/61_cell_paragraph_with_runs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/62_many_cell_paragraphs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/63_table_style_round_trip.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/64_many_sections.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/65_20x20_table_formatted.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/66_toc_like_structure.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/67_paragraph_insert_before_chain.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/68_invoice.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/69_newsletter.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/70_add_and_iterate_back.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/71_academic_paper.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/72_legal_contract.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/73_form_with_many_tables.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/74_paragraph_with_10_runs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/75_paragraph_negative_first_line_indent.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/76_rgbcolor_from_string.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/77_length_unit_conversions.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/78_paragraph_copy_style.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/79_bulk_cell_formatting.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/80_apply_style_after_add_run.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/81_multi_page_with_breaks.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/82_add_text_on_existing_run.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/83_clear_then_repopulate_paragraph.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/84_table_reread_row_count.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/85_header_footer_access.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/86_font_read_unset_returns_none.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/87_500_paragraph_doc.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/88_mixed_content_iteration.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/89_alignment_clear_via_none.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/90_cell_add_paragraph_styled.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/91_many_small_tables.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/92_margins_every_section.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/93_font_bool_reads_after_set.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/94_page_break_before_paragraph.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/95_paragraph_hyperlinks_empty.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/96_paragraph_contains_page_break.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/97_document_styles_by_key.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/98_style_contains_check.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/99_run_add_picture_from_bytes.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex02_unicode_everywhere.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex03_1000_paragraphs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex04_50x50_table.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex05_long_text_in_cell.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex06_hundred_tiny_runs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex07_every_font_boolean.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex08_many_continuous_sections.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex09_many_tab_stops.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex10_complex_bom.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex11_banded_rows_formatting.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex12_section_reconfigure.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex13_cell_with_10_paragraphs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex14_styled_report_table.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex15_paragraph_all_format_props.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex16_runs_interleaved_with_breaks.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex17_all_break_kinds.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex18_read_back_large_doc.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex19_mutate_all_runs.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/ex20_kitchen_sink_v2.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega01_book_chapter.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega02_research_proposal.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega03_financial_statement.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega04_recipe_card.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega05_user_manual.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega06_complex_newsletter.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega07_budget_spreadsheet.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega08_product_catalog.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega09_signed_contract.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/mega10_api_documentation.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw01_official_quickstart.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw02_paragraph_style_list.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw03_character_formatting.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw04_section_page_setup.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw05_toc_pattern.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw06_meeting_minutes.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw07_dense_formatting_demo.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw08_table_merged_header.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw09_bulk_run_iteration.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw10_colored_grid_table.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw11_header_text.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw12_first_page_footer.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw13_even_page_header.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/rw15_paragraph_style_instance.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/ours_spec.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/parity_crawl.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/parity_diff.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/real_world_cases.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/round_trip_tests.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/stock_spec.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/test_e2e_against_staging.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/README.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/__init__.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/baseline_gaps.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/compare.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/intentional_deviations.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/introspect.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/reports/GAP_ANALYSIS.md +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/reports/gap_report.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/run_parity.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/snapshots/athena_latest.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/snapshots/upstream_python_docx_1.2.0.json +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/parity/test_parity_gap.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_add_section_extract_items.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_athena_extensions_contract.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_athena_extensions_registry.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_batching_perf.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_block_not_found_error.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_buffer.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_add_paragraph_wire_shape.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_add_table_not_supported.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_fastpath_runs.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_inner_add_hyperlink_stash.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_inner_add_run_via_cell_insert.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_inner_format_stash.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_inner_run_format_stash.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_inner_run_guard.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_text_plain_fastpath.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_cell_text_replace_semantics.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_citations.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_collapsed_range_format.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_command_dataclasses.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_commands.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_comments.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_document_asset_id_property.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_document_clear.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_document_create.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_document_create_from_template.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_document_factory_validation.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_docx_exec_lab.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_docx_exec_lab_server.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_e2e_partial_failure_cascade.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_execution_scope.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_find_replace_session_open.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_http_transport.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_hyperlink_coalescing.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_image_url_data_uri.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_insert_deferred.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_iter_inner_content.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_list_styles.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_merged_cell_secondary_slot.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_merged_cells.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_oxml_shim.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_paragraph_text_len_cache.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_parity_misc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_parity_round2.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_partial_failure_cascade.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_phase_a_behavior.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_phase_b_headers_footers.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_phase_c_tables.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_positional_cell_id.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_postproc_cell_format_rewrite.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_postproc_cell_run_format_rewrite.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_postproc_ref_restore.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_pr19766_review_fixes.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_ptc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_python_docx_api_parity.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_revisions.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_add_paragraph_style.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_add_picture.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_add_run.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_cell_add_paragraph.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_comments_add_comment.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_comments_get.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_document_audit.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_document_element.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_enum_section.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_font_audit.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_header_footer.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_hyperlink.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_inline_shape.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_insert_paragraph_before.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_misc.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_paragraph_strict.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_paragraph_style.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_paragraph_style_strict.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_parfmt.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_row_col_cell.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_run_add_break.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_run_bool_setters.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_run_style.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_run_style_strict.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_run_text.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_run_underline.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_section_audit.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_section_dimensions.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_section_onoff.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_settings.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_shared_audit.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_style.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_styles.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_table_audit.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_table_cell.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_table_dimensions.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_silent_stub_table_layout.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_smoke_integration.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_style_acceptance.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_style_font.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_style_setters_contract.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_table_set_cell_perf.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_table_style_id_resolution.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_temporarily_unavailable.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_validate_find_replace_asset_script.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_wire_contract.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_xml_attr_guard.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/test_zod_wire_contract.py +0 -0
- {athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: athena-python-docx
|
|
3
|
-
Version: 0.21.
|
|
3
|
+
Version: 0.21.6
|
|
4
4
|
Summary: Drop-in replacement for python-docx that connects to Athena's DOCX Studio collaborative document stack
|
|
5
5
|
Project-URL: Homepage, https://athenaintelligence.ai
|
|
6
6
|
Author-email: Athena Intelligence <engineering@athenaintelligence.ai>
|
|
@@ -668,12 +668,27 @@ class Run:
|
|
|
668
668
|
h_px: float = _emu_to_px(h_emu)
|
|
669
669
|
w_pt: float = w_emu / 12700.0
|
|
670
670
|
h_pt: float = h_emu / 12700.0
|
|
671
|
+
# Anchor inside this run's paragraph so the picture lands inline and
|
|
672
|
+
# inherits the paragraph's alignment/spacing — python-docx semantics,
|
|
673
|
+
# where ``run.add_picture`` places the image in that run's paragraph.
|
|
674
|
+
# Cell-inner paragraphs keep the legacy document-end block: their
|
|
675
|
+
# blockIds are not addressable by the applier's selection resolver.
|
|
676
|
+
at: dict = {"kind": "documentEnd"}
|
|
677
|
+
if not getattr(self, "_in_cell", False) and self._block_id:
|
|
678
|
+
at = {
|
|
679
|
+
"kind": "selection",
|
|
680
|
+
"start": {
|
|
681
|
+
"kind": "text",
|
|
682
|
+
"blockId": self._block_id,
|
|
683
|
+
"offset": self._range[1],
|
|
684
|
+
},
|
|
685
|
+
}
|
|
671
686
|
result: object = run_sync(
|
|
672
687
|
self._session.doc.create.image(
|
|
673
688
|
{
|
|
674
689
|
"src": data_uri,
|
|
675
690
|
"size": {"width": w_px, "height": h_px},
|
|
676
|
-
"at":
|
|
691
|
+
"at": at,
|
|
677
692
|
},
|
|
678
693
|
),
|
|
679
694
|
)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "athena-python-docx"
|
|
7
|
-
version = "0.21.
|
|
7
|
+
version = "0.21.6"
|
|
8
8
|
description = "Drop-in replacement for python-docx that connects to Athena's DOCX Studio collaborative document stack"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""``Run.add_picture`` anchors inside its own paragraph (python-docx parity).
|
|
2
|
+
|
|
3
|
+
The picture must land inline in the run's paragraph so it inherits that
|
|
4
|
+
paragraph's alignment and spacing. An unanchored ``documentEnd`` create makes
|
|
5
|
+
the applier wrap the image in a fresh left-aligned paragraph — so e.g. a
|
|
6
|
+
centered logo paragraph stays empty while the logo renders left-aligned in its
|
|
7
|
+
own block. Cell-inner runs and ``Document.add_picture`` keep the document-end
|
|
8
|
+
block form.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import base64
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
# Minimal valid 1x1 PNG.
|
|
17
|
+
_PNG = bytes.fromhex(
|
|
18
|
+
"89504e470d0a1a0a0000000d49484452000000010000000108060000001f15c489"
|
|
19
|
+
"0000000a49444154789c6360000002000154a24f5e0000000049454e44ae426082"
|
|
20
|
+
)
|
|
21
|
+
_PNG_URI = f"data:image/png;base64,{base64.b64encode(_PNG).decode()}"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _image_call(fake_sd_methods: Any) -> dict:
|
|
25
|
+
return next(c for c in fake_sd_methods.calls if c[0] == "create.image")[1]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_run_add_picture_anchors_in_its_paragraph(
|
|
29
|
+
mock_session: Any, fake_sd_methods: Any
|
|
30
|
+
) -> None:
|
|
31
|
+
from docx.text.run import Run
|
|
32
|
+
|
|
33
|
+
run = Run(session=mock_session, block_id="p-42", range_=(0, 11))
|
|
34
|
+
run.add_picture(_PNG_URI)
|
|
35
|
+
params = _image_call(fake_sd_methods)
|
|
36
|
+
assert params["at"] == {
|
|
37
|
+
"kind": "selection",
|
|
38
|
+
"start": {"kind": "text", "blockId": "p-42", "offset": 11},
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def test_cell_inner_run_add_picture_keeps_document_end(
|
|
43
|
+
mock_session: Any, fake_sd_methods: Any
|
|
44
|
+
) -> None:
|
|
45
|
+
# Cell-inner paragraphs are not addressable by the applier's selection
|
|
46
|
+
# resolver — a blockId anchor would abort the whole batch.
|
|
47
|
+
from docx.text.run import Run
|
|
48
|
+
|
|
49
|
+
run = Run(session=mock_session, block_id="tc:0:0:0", range_=(0, 0), in_cell=True)
|
|
50
|
+
run.add_picture(_PNG_URI)
|
|
51
|
+
assert _image_call(fake_sd_methods)["at"] == {"kind": "documentEnd"}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_document_add_picture_keeps_document_end(
|
|
55
|
+
mock_session: Any, fake_sd_methods: Any
|
|
56
|
+
) -> None:
|
|
57
|
+
# python-docx parity: Document.add_picture appends a new paragraph holding
|
|
58
|
+
# the picture, so the block-creating document-end form is correct there.
|
|
59
|
+
from docx.document import Document as DocClass
|
|
60
|
+
|
|
61
|
+
doc = DocClass.__new__(DocClass)
|
|
62
|
+
doc._session = mock_session
|
|
63
|
+
doc._saved = False
|
|
64
|
+
doc._closed = False
|
|
65
|
+
doc._pending_user_name = None
|
|
66
|
+
doc._pending_user_email = None
|
|
67
|
+
doc._pending_track_revisions = False
|
|
68
|
+
doc.add_picture(_PNG_URI)
|
|
69
|
+
assert _image_call(fake_sd_methods)["at"] == {"kind": "documentEnd"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/smoke_test_block_not_found.py
RENAMED
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/scripts/validate_find_replace_asset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/README.md
RENAMED
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/__init__.py
RENAMED
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/_runner.py
RENAMED
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/firm_templates/extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{athena_python_docx-0.21.5 → athena_python_docx-0.21.6}/tests/fidelity/op_snapshots/68_invoice.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|