athena-python-docx 0.15.0__tar.gz → 0.15.1__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.15.0 → athena_python_docx-0.15.1}/PKG-INFO +1 -1
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/__init__.py +1 -1
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_buffer.py +7 -2
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_execution.py +1 -1
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/client.py +0 -1
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/pyproject.toml +1 -1
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_buffer.py +24 -2
- athena_python_docx-0.15.1/tests/test_execution_scope.py +63 -0
- athena_python_docx-0.15.0/tests/test_execution_scope.py +0 -26
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/.gitignore +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/CLAUDE.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/README.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_athena_extension.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_batching.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_http.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_http_doc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_image_utils.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_postproc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_ptc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/_table_styles.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/api.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/bookmarks.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/charts.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/commands.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/comments.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/document.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/enum/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/enum/section.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/enum/style.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/enum/table.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/enum/text.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/errors.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/exceptions.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/fields.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/footnotes.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/math.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/opc/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/opc/coreprops.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/oxml/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/revisions.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/sdt.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/section.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/session.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/settings.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/shape.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/shared.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/styles/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/styles/style.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/styles/styles.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/table.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/font.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/hyperlink.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/pagebreak.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/paragraph.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/parfmt.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/run.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/text/tabstops.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/toc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/docx/typing.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/scripts/publish.sh +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/scripts/release.sh +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/scripts/round_trip_smoke.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/scripts/smoke_test_block_not_found.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/conftest.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/METHODOLOGY.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/README.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/ab_probe_cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/ab_probe_runner.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/auto_gen_cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/binary_round_trip.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/complex_cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/coverage_report.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/extract.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/extreme_cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/fake_session.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/README.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/_runner.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/extractor.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/test_pw_corpus.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/test_pw_research_digest.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/local_runner.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/mega_cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshot.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/01_basic_paragraph.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/02_multiple_headings.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/03_runs_with_formatting.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/04_font_name_and_size.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/05_font_color_rgb.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/06_font_character_properties.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/07_font_subscript_superscript.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/08_font_highlight.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/09_paragraph_alignment.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/100_table_negative_indexing.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/101_table_cells_flat_iteration.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/102_text_with_embedded_special_chars.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/104_core_properties_datetime.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/105_default_one_section.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/106_heading_paragraph_format.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/107_varying_row_heights.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/10_paragraph_indents.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/11_paragraph_spacing.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/12_paragraph_keep_options.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/13_paragraph_tab_stops.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/14_run_add_tab_and_break.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/15_run_add_break_page.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/16_paragraph_clear_and_insert_before.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/17_table_basic.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/18_table_cell_text.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/19_table_row_column_sizing.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/20_table_cell_vertical_alignment.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/21_table_alignment_and_autofit.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/22_table_cell_paragraphs_iteration.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/24_table_add_row_column.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/25_table_merge_cells.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/26_section_page_setup.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/27_section_margins.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/28_section_add_new.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/29_section_headers_linked.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/30_styles_iteration.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/31_styles_lookup_and_default.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/32_styles_add_paragraph_style.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/33_core_properties_set_and_get.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/34_inline_shapes_iterate_empty.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/35_full_report.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/36_replace_text_in_paragraph.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/37_iterate_runs_and_format_all_bold.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/38_font_all_properties.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/39_large_body_100_paragraphs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/40_large_table_10x10.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/41_unicode_and_emoji.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/42_very_long_paragraph.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/43_paragraph_text_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/44_paragraph_alignment_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/45_cell_text_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/46_run_text_setter_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/47_font_size_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/48_font_color_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/49_resume_layout.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/50_multi_section_doc.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/52_iterate_everything.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/53_apply_style_to_paragraphs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/54_empty_everything.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/55_single_character_runs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/56_everything_in_one.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/57_runs_after_multiple_text_appends.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/58_modify_runs_in_place.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/59_indent_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/60_space_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/61_cell_paragraph_with_runs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/62_many_cell_paragraphs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/63_table_style_round_trip.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/64_many_sections.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/65_20x20_table_formatted.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/66_toc_like_structure.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/67_paragraph_insert_before_chain.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/68_invoice.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/69_newsletter.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/70_add_and_iterate_back.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/71_academic_paper.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/72_legal_contract.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/73_form_with_many_tables.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/74_paragraph_with_10_runs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/75_paragraph_negative_first_line_indent.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/76_rgbcolor_from_string.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/77_length_unit_conversions.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/78_paragraph_copy_style.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/79_bulk_cell_formatting.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/80_apply_style_after_add_run.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/81_multi_page_with_breaks.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/82_add_text_on_existing_run.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/83_clear_then_repopulate_paragraph.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/84_table_reread_row_count.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/85_header_footer_access.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/86_font_read_unset_returns_none.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/87_500_paragraph_doc.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/88_mixed_content_iteration.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/89_alignment_clear_via_none.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/90_cell_add_paragraph_styled.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/91_many_small_tables.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/92_margins_every_section.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/93_font_bool_reads_after_set.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/94_page_break_before_paragraph.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/95_paragraph_hyperlinks_empty.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/96_paragraph_contains_page_break.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/97_document_styles_by_key.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/98_style_contains_check.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/99_run_add_picture_from_bytes.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex02_unicode_everywhere.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex03_1000_paragraphs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex04_50x50_table.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex05_long_text_in_cell.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex06_hundred_tiny_runs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex07_every_font_boolean.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex08_many_continuous_sections.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex09_many_tab_stops.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex10_complex_bom.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex11_banded_rows_formatting.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex12_section_reconfigure.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex13_cell_with_10_paragraphs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex14_styled_report_table.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex15_paragraph_all_format_props.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex16_runs_interleaved_with_breaks.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex17_all_break_kinds.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex18_read_back_large_doc.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex19_mutate_all_runs.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/ex20_kitchen_sink_v2.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega01_book_chapter.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega02_research_proposal.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega03_financial_statement.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega04_recipe_card.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega05_user_manual.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega06_complex_newsletter.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega07_budget_spreadsheet.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega08_product_catalog.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega09_signed_contract.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/mega10_api_documentation.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw01_official_quickstart.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw02_paragraph_style_list.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw03_character_formatting.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw04_section_page_setup.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw05_toc_pattern.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw06_meeting_minutes.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw07_dense_formatting_demo.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw08_table_merged_header.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw09_bulk_run_iteration.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw10_colored_grid_table.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw11_header_text.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw12_first_page_footer.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw13_even_page_header.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/rw15_paragraph_style_instance.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/ours_spec.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/parity_crawl.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/parity_diff.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/real_world_cases.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/round_trip_tests.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/runner.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/stock_spec.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/test_e2e_against_staging.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/README.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/__init__.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/baseline_gaps.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/compare.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/intentional_deviations.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/introspect.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/reports/GAP_ANALYSIS.md +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/reports/gap_report.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/run_parity.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/snapshots/athena_latest.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/snapshots/upstream_python_docx_1.2.0.json +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/parity/test_parity_gap.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_add_section_extract_items.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_athena_extensions_contract.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_athena_extensions_registry.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_batching_perf.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_block_not_found_error.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_add_paragraph_wire_shape.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_add_table_not_supported.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_inner_add_hyperlink_stash.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_inner_add_run_via_cell_insert.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_inner_format_stash.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_inner_run_format_stash.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_inner_run_guard.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_text_plain_fastpath.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_cell_text_replace_semantics.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_collapsed_range_format.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_command_dataclasses.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_commands.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_comments.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_document_asset_id_property.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_document_clear.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_document_create.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_document_create_from_template.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_document_factory_validation.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_e2e_partial_failure_cascade.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_find_replace_session_open.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_http_transport.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_hyperlink_coalescing.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_insert_deferred.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_iter_inner_content.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_list_styles.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_merged_cell_secondary_slot.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_merged_cells.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_oxml_shim.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_paragraph_text_len_cache.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_parity_misc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_parity_round2.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_partial_failure_cascade.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_phase_a_behavior.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_phase_b_headers_footers.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_phase_c_tables.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_postproc_cell_format_rewrite.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_postproc_cell_run_format_rewrite.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_postproc_ref_restore.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_pr19766_review_fixes.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_ptc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_python_docx_api_parity.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_revisions.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_add_paragraph_style.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_add_picture.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_add_run.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_cell_add_paragraph.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_comments_add_comment.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_comments_get.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_document_audit.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_document_element.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_enum_section.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_font_audit.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_header_footer.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_hyperlink.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_inline_shape.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_insert_paragraph_before.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_misc.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_paragraph_strict.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_paragraph_style.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_paragraph_style_strict.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_parfmt.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_row_col_cell.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_run_add_break.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_run_bool_setters.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_run_style.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_run_style_strict.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_run_text.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_run_underline.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_section_audit.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_section_dimensions.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_section_onoff.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_settings.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_shared_audit.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_style.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_styles.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_table_audit.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_table_cell.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_table_dimensions.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_silent_stub_table_layout.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_smoke_integration.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_style_acceptance.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_style_font.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_style_setters_contract.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_table_set_cell_perf.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_table_style_id_resolution.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_temporarily_unavailable.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_wire_contract.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_xml_attr_guard.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/test_zod_wire_contract.py +0 -0
- {athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: athena-python-docx
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.1
|
|
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>
|
|
@@ -474,9 +474,14 @@ class CommandBuffer:
|
|
|
474
474
|
"""Flush and disable. Idempotent."""
|
|
475
475
|
if self._closed:
|
|
476
476
|
return
|
|
477
|
-
self._assert_current_execution()
|
|
478
477
|
try:
|
|
479
|
-
self.
|
|
478
|
+
if self.is_stale_for_current_execution:
|
|
479
|
+
with self._lock:
|
|
480
|
+
self._cancel_timer_locked()
|
|
481
|
+
self._pending = []
|
|
482
|
+
self._proxy_id_refs = {}
|
|
483
|
+
else:
|
|
484
|
+
self.flush()
|
|
480
485
|
finally:
|
|
481
486
|
self._closed = True
|
|
482
487
|
_unregister(self)
|
|
@@ -25,7 +25,7 @@ def begin_execution(execution_id: str | None) -> None:
|
|
|
25
25
|
and existing tests behaving like normal in-memory Python programs.
|
|
26
26
|
"""
|
|
27
27
|
global _current_execution_id
|
|
28
|
-
_current_execution_id = str(execution_id) if execution_id else None
|
|
28
|
+
_current_execution_id = str(execution_id) if execution_id is not None else None
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def current_execution_id() -> str | None:
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "athena-python-docx"
|
|
7
|
-
version = "0.15.
|
|
7
|
+
version = "0.15.1"
|
|
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"
|
|
@@ -213,7 +213,27 @@ def test_buffer_rejects_reuse_across_execution_scopes() -> None:
|
|
|
213
213
|
assert fake.batches == []
|
|
214
214
|
finally:
|
|
215
215
|
begin_execution("exec_1")
|
|
216
|
+
try:
|
|
217
|
+
buf.close()
|
|
218
|
+
finally:
|
|
219
|
+
begin_execution(None)
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def test_stale_buffer_close_discards_pending_without_network() -> None:
|
|
223
|
+
fake = _FakeClient()
|
|
224
|
+
begin_execution("exec_1")
|
|
225
|
+
buf = CommandBuffer(fake, "asset_1", auto_flush_seconds=0.0)
|
|
226
|
+
try:
|
|
227
|
+
buf.call(FormatApply(target={"kind": "block"}, inline={"bold": True}))
|
|
228
|
+
begin_execution("exec_2")
|
|
216
229
|
buf.close()
|
|
230
|
+
|
|
231
|
+
assert fake.batches == []
|
|
232
|
+
assert buf.pending_count == 0
|
|
233
|
+
begin_execution("exec_1")
|
|
234
|
+
with pytest.raises(RuntimeError, match="closed"):
|
|
235
|
+
buf.call(FormatApply(target={"kind": "block"}, inline={"italic": True}))
|
|
236
|
+
finally:
|
|
217
237
|
begin_execution(None)
|
|
218
238
|
|
|
219
239
|
|
|
@@ -251,5 +271,7 @@ def test_flush_all_strict_refuses_stale_pending_buffer() -> None:
|
|
|
251
271
|
assert fake.batches == []
|
|
252
272
|
finally:
|
|
253
273
|
begin_execution("exec_1")
|
|
254
|
-
|
|
255
|
-
|
|
274
|
+
try:
|
|
275
|
+
buf.close()
|
|
276
|
+
finally:
|
|
277
|
+
begin_execution(None)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Execution-scope safety for reused Daytona document sandboxes."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from docx import Document, begin_execution
|
|
8
|
+
from docx.errors import StaleDocumentHandleError
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_reusing_document_in_later_execution_fails_before_network(
|
|
12
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
13
|
+
) -> None:
|
|
14
|
+
monkeypatch.setenv("ATHENA_DOCX_BASE_URL", "https://example.invalid")
|
|
15
|
+
monkeypatch.setenv("ATHENA_DOCX_API_KEY", "token")
|
|
16
|
+
|
|
17
|
+
begin_execution("exec_1")
|
|
18
|
+
doc = Document("asset_abc")
|
|
19
|
+
try:
|
|
20
|
+
begin_execution("exec_2")
|
|
21
|
+
with pytest.raises(StaleDocumentHandleError, match="Reopen"):
|
|
22
|
+
doc.save()
|
|
23
|
+
finally:
|
|
24
|
+
begin_execution("exec_1")
|
|
25
|
+
try:
|
|
26
|
+
doc.close()
|
|
27
|
+
finally:
|
|
28
|
+
begin_execution(None)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_empty_string_execution_id_is_real_scope(
|
|
32
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
33
|
+
) -> None:
|
|
34
|
+
monkeypatch.setenv("ATHENA_DOCX_BASE_URL", "https://example.invalid")
|
|
35
|
+
monkeypatch.setenv("ATHENA_DOCX_API_KEY", "token")
|
|
36
|
+
|
|
37
|
+
begin_execution("")
|
|
38
|
+
doc = Document("asset_abc")
|
|
39
|
+
try:
|
|
40
|
+
begin_execution("exec_2")
|
|
41
|
+
with pytest.raises(StaleDocumentHandleError, match="Reopen"):
|
|
42
|
+
doc.save()
|
|
43
|
+
finally:
|
|
44
|
+
begin_execution("")
|
|
45
|
+
try:
|
|
46
|
+
doc.close()
|
|
47
|
+
finally:
|
|
48
|
+
begin_execution(None)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def test_stale_document_close_cleans_up_without_network(
|
|
52
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
53
|
+
) -> None:
|
|
54
|
+
monkeypatch.setenv("ATHENA_DOCX_BASE_URL", "https://example.invalid")
|
|
55
|
+
monkeypatch.setenv("ATHENA_DOCX_API_KEY", "token")
|
|
56
|
+
|
|
57
|
+
begin_execution("exec_1")
|
|
58
|
+
doc = Document("asset_abc")
|
|
59
|
+
try:
|
|
60
|
+
begin_execution("exec_2")
|
|
61
|
+
doc.close()
|
|
62
|
+
finally:
|
|
63
|
+
begin_execution(None)
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"""Execution-scope safety for reused Daytona document sandboxes."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import pytest
|
|
6
|
-
|
|
7
|
-
from docx import Document, begin_execution
|
|
8
|
-
from docx.errors import StaleDocumentHandleError
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def test_reusing_document_in_later_execution_fails_before_network(
|
|
12
|
-
monkeypatch: pytest.MonkeyPatch,
|
|
13
|
-
) -> None:
|
|
14
|
-
monkeypatch.setenv("ATHENA_DOCX_BASE_URL", "https://example.invalid")
|
|
15
|
-
monkeypatch.setenv("ATHENA_DOCX_API_KEY", "token")
|
|
16
|
-
|
|
17
|
-
begin_execution("exec_1")
|
|
18
|
-
doc = Document("asset_abc")
|
|
19
|
-
try:
|
|
20
|
-
begin_execution("exec_2")
|
|
21
|
-
with pytest.raises(StaleDocumentHandleError, match="Reopen"):
|
|
22
|
-
doc.save()
|
|
23
|
-
finally:
|
|
24
|
-
begin_execution("exec_1")
|
|
25
|
-
doc.close()
|
|
26
|
-
begin_execution(None)
|
|
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.15.0 → athena_python_docx-0.15.1}/scripts/smoke_test_block_not_found.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.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/README.md
RENAMED
|
File without changes
|
{athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/__init__.py
RENAMED
|
File without changes
|
{athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/tests/fidelity/firm_templates/_runner.py
RENAMED
|
File without changes
|
{athena_python_docx-0.15.0 → athena_python_docx-0.15.1}/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.15.0 → athena_python_docx-0.15.1}/tests/fidelity/op_snapshots/68_invoice.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|