PyMuPDF 1.25.5__tar.gz → 1.26.0__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.
- {pymupdf-1.25.5 → pymupdf-1.26.0}/PKG-INFO +1 -1
- {pymupdf-1.25.5 → pymupdf-1.26.0}/changes.txt +32 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/scripts/gh_release.py +1 -1
- {pymupdf-1.25.5 → pymupdf-1.26.0}/scripts/sysinstall.py +5 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/scripts/test.py +2 -2
- {pymupdf-1.25.5 → pymupdf-1.26.0}/setup.py +7 -20
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/__init__.py +276 -207
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/fitz___init__.py +1 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/table.py +144 -58
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/utils.py +9 -9
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/conftest.py +3 -0
- pymupdf-1.26.0/tests/resources/test_4363.pdf +0 -0
- pymupdf-1.26.0/tests/resources/test_4423.pdf +0 -0
- pymupdf-1.26.0/tests/resources/test_4435.pdf +0 -0
- pymupdf-1.26.0/tests/resources/test_4479.pdf +1469 -1
- pymupdf-1.26.0/tests/resources/test_4505.pdf +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.cbz +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.doc +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.docx +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.epub +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.fb2 +64 -0
- pymupdf-1.26.0/tests/resources/test_open2.html +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.jpg +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.mobi +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.pdf +0 -0
- pymupdf-1.26.0/tests/resources/test_open2.svg +18 -0
- pymupdf-1.26.0/tests/resources/test_open2.xhtml +17 -0
- pymupdf-1.26.0/tests/resources/test_open2.xml +21 -0
- pymupdf-1.26.0/tests/resources/test_open2.xps +0 -0
- pymupdf-1.26.0/tests/resources/test_open2_expected.json +808 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_2548.py +1 -4
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_2907.py +0 -4
- pymupdf-1.26.0/tests/test_4466.pdf +0 -0
- pymupdf-1.26.0/tests/test_4505.py +27 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_annots.py +91 -19
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_balance_count.py +1 -4
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_font.py +106 -8
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_general.py +242 -53
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_mupdf_regressions.py +3 -21
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_pixmap.py +75 -8
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_story.py +1 -5
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_tables.py +102 -30
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_textbox.py +0 -3
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_textextract.py +36 -14
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_widgets.py +0 -4
- pymupdf-1.26.0/tests/util.py +28 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/COPYING +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/README.md +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/READMEb.md +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/READMEd.md +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/pipcl.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/pyproject.toml +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/pytest.ini +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/__main__.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/_apply_pages.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/_wxcolors.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/extra.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/fitz_table.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/fitz_utils.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src/pymupdf.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/__init__.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/__main__.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/_config.h +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/fitz_old.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-annot.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-convert.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-defines.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-devices.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-fields.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-fileobj.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-geo-c.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-geo-py.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-globals.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-other.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-pdfinfo.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-pixmap.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-portfolio.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-python.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-select.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-stext.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/helper-xobject.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/utils.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/src_classic/version.i +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/README.md +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/gentle_compare.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/001003ED.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/1.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/2.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/2201.00069.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/3.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/4.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/Bezier.epub +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/PragmaticaC.otf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/battery-file-22.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/bug1945.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/bug1971.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/chinese-tables.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/chinese-tables.pickle +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/circular-toc.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/cms-etc-filled.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/cython.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/cython.pickle +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/dotted-gridlines.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/full_toc.txt +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/github_sample.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/has-bad-fonts.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/image-file1.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/img-regular.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/img-transparent.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/img-transparent.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/interfield-calculation.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/joined.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/merge-form1.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/merge-form2.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/metadata.txt +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/mupdf_explored.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/nur-ruhig.jpg +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/quad-calc-0.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/simple_toc.txt +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/small-table.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/strict-yes-no.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/symbol-list.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/symbols.txt +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-2333.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-2462.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-2812.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-3143.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-3150.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-3207.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-3591.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-3820.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-4055.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-707448.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-707673.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-E+A.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test-linebreaks.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test2093.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test2182.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test2238.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_1645_expected.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_1824.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2108.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2270.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2533.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2548.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2553-2.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2553.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2596.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2608_expected +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2634.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2635.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2645_1.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2645_2.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2645_3.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2710.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2730.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2742.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2788.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2791_content.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2791_coverpage.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2861.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2871.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2885.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2904.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2907.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2954.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2957_1.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2957_2.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2969.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_2979.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3050_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3058.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3062.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3070.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3072.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3087.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3179.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3186.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3197.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3357.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3362.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3376.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3448.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3448.pdf-expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3450.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3493.epub +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3569.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3594.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3615.epub +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3624.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3624_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3650.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3654.docx +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3677.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3687-3.epub +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3687.epub +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3705.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3725.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3727.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3780.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3789.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3842.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3848.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3854.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3854_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.0.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.1.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.2.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.3.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.4.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.5.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.6.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.7.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3886.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3887.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3933.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3950.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_3994.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4004.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4017.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4026.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4034.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4043.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4047.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4079.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4079_after.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4079_after_1.25.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4090.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4125.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4139.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4141.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4147.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4179.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4179_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4180.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4180_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4182.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4182_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4224.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4245.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4245_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4263.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4415.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_4415_out_expected.png +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_annot_file_info.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_delete_image.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/test_toc_count.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/text-find-ligatures.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/type3font.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/v110-changes.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/resources/widgettest.pdf +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/run_compound.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_2634.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_2904.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_4141.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_badfonts.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_barcode.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_cluster_drawings.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_codespell.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_crypting.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_docs_samples.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_drawings.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_embeddedfiles.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_extractimage.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_flake8.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_geometry.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_imagebbox.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_imagemasks.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_import.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_insertimage.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_insertpdf.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_linebreaks.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_linequad.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_memory.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_metadata.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_named_links.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_nonpdf.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_object_manipulation.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_objectstreams.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_optional_content.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_page_links.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_pagedelete.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_pagelabels.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_pylint.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_remove-rotation.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_rtl.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_showpdfpage.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_spikes.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_tesseract.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_textsearch.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_toc.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/tests/test_word_delimiters.py +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/valgrind.supp +0 -0
- {pymupdf-1.25.5 → pymupdf-1.26.0}/wdev.py +0 -0
|
@@ -2,6 +2,38 @@ Change Log
|
|
|
2
2
|
==========
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
**Changes in version 1.26.0 (2025-05-22)**
|
|
6
|
+
|
|
7
|
+
* Use MuPDF-1.26.1.
|
|
8
|
+
|
|
9
|
+
* Fixed issues:
|
|
10
|
+
|
|
11
|
+
* **Fixed** `4324 <https://github.com/pymupdf/PyMuPDF/issues/4324>`_: cluster_drawings() fails to cluster horizontal and vertical thin lines
|
|
12
|
+
* **Fixed** `4363 <https://github.com/pymupdf/PyMuPDF/issues/4363>`_: Trouble with searching
|
|
13
|
+
* **Fixed** `4404 <https://github.com/pymupdf/PyMuPDF/issues/4404>`_: IndexError in page.get_links()
|
|
14
|
+
* **Fixed** `4412 <https://github.com/pymupdf/PyMuPDF/issues/4412>`_: Regression? Spurious error? in insert_pdf in v1.25.4
|
|
15
|
+
* **Fixed** `4423 <https://github.com/pymupdf/PyMuPDF/issues/4423>`_: pymupdf.mupdf.FzErrorFormat: code=7: cannot find object in xref error encountered after version 1.25.3
|
|
16
|
+
* **Fixed** `4435 <https://github.com/pymupdf/PyMuPDF/issues/4435>`_: get_pixmap method stuck on one page
|
|
17
|
+
* **Fixed** `4439 <https://github.com/pymupdf/PyMuPDF/issues/4439>`_: New Xml class from data does not work - bug in code
|
|
18
|
+
* **Fixed** `4445 <https://github.com/pymupdf/PyMuPDF/issues/4445>`_: Broken XREF table incorrectly repaired
|
|
19
|
+
* **Fixed** `4447 <https://github.com/pymupdf/PyMuPDF/issues/4447>`_: Stroke color of annotations cannot be correctly set
|
|
20
|
+
* **Fixed** `4479 <https://github.com/pymupdf/PyMuPDF/issues/4479>`_: set_layer_ui_config() toggles all layers rather than just one
|
|
21
|
+
* **Fixed** `4505 <https://github.com/pymupdf/PyMuPDF/issues/4505>`_: Follow Widget flag values up its parent structure
|
|
22
|
+
|
|
23
|
+
* Other:
|
|
24
|
+
|
|
25
|
+
* Partial fixed for `4457 <https://github.com/pymupdf/PyMuPDF/issues/4457>`_: Wrong characters displayed after font subsetting (w/ native method)
|
|
26
|
+
* Support image stamp annotations.
|
|
27
|
+
* Support recoloring pages.
|
|
28
|
+
* Added example of using Django's file storage API to open files with pymupdf.
|
|
29
|
+
* Clarified FreeText annotation color options.
|
|
30
|
+
We now raise an exception if an attempt is made to set attributes that can not be supported.
|
|
31
|
+
* Fixed potential segv in Pixmap.is_unicolor().
|
|
32
|
+
* Added runtime assert that that PyMuPDF and MuPDF were built with compatible
|
|
33
|
+
NDEBUG settings (related to `4390 <https://github.com/pymupdf/PyMuPDF/issues/4390>`_).
|
|
34
|
+
* Simplified handling of filename/filetype when opening documents.
|
|
35
|
+
|
|
36
|
+
|
|
5
37
|
**Changes in version 1.25.5 (2025-03-31)**
|
|
6
38
|
|
|
7
39
|
* Fixed issues:
|
|
@@ -448,7 +448,7 @@ def build( platform_=None, valgrind=False):
|
|
|
448
448
|
# Include MuPDF build-time files.
|
|
449
449
|
flavour += 'd'
|
|
450
450
|
env_set( 'PYMUPDF_SETUP_FLAVOUR', flavour, pass_=1)
|
|
451
|
-
run( f'cibuildwheel{platform_arg}', env_extra)
|
|
451
|
+
run( f'cibuildwheel{platform_arg}', env_extra=env_extra)
|
|
452
452
|
run( 'echo after {flavour=}')
|
|
453
453
|
run( 'ls -l wheelhouse')
|
|
454
454
|
|
|
@@ -20,6 +20,7 @@ python is already defined.
|
|
|
20
20
|
|
|
21
21
|
Args:
|
|
22
22
|
|
|
23
|
+
--gdb 0|1
|
|
23
24
|
--mupdf-dir <mupdf_dir>
|
|
24
25
|
Path of MuPDF checkout; default is 'mupdf'.
|
|
25
26
|
--mupdf-do 0|1
|
|
@@ -134,6 +135,7 @@ def main():
|
|
|
134
135
|
|
|
135
136
|
# Set default behaviour.
|
|
136
137
|
#
|
|
138
|
+
gdb = False
|
|
137
139
|
use_installer = True
|
|
138
140
|
mupdf_do = True
|
|
139
141
|
mupdf_dir = 'mupdf'
|
|
@@ -165,6 +167,7 @@ def main():
|
|
|
165
167
|
if arg in ('-h', '--help'):
|
|
166
168
|
log(__doc__)
|
|
167
169
|
return
|
|
170
|
+
elif arg == '--gdb': gdb = int(next(args))
|
|
168
171
|
elif arg == '--mupdf-do': mupdf_do = int(next(args))
|
|
169
172
|
elif arg == '--mupdf-dir': mupdf_dir = next(args)
|
|
170
173
|
elif arg == '--mupdf-git': mupdf_git = next(args)
|
|
@@ -369,6 +372,8 @@ def main():
|
|
|
369
372
|
# 2024-03-20: Not sure whether/where `pymupdf` binary is installed, so we
|
|
370
373
|
# disable the test_cli* tests.
|
|
371
374
|
command += f' {pymupdf_dir}/scripts/test.py'
|
|
375
|
+
if gdb:
|
|
376
|
+
command += ' --gdb 1'
|
|
372
377
|
command += f' -v 0'
|
|
373
378
|
if pytest_name is None:
|
|
374
379
|
excluded_tests = (
|
|
@@ -13,8 +13,8 @@ Examples:
|
|
|
13
13
|
./PyMuPDF/scripts/test.py --mupdf 'git:https://git.ghostscript.com/mupdf.git' buildtest
|
|
14
14
|
Build and test with internal checkout of mupdf master.
|
|
15
15
|
|
|
16
|
-
./PyMuPDF/scripts/test.py --mupdf 'git:--branch 1.
|
|
17
|
-
Build and test using internal checkout of mupdf 1.
|
|
16
|
+
./PyMuPDF/scripts/test.py --mupdf 'git:--branch 1.26.x https://github.com/ArtifexSoftware/mupdf.git' buildtest
|
|
17
|
+
Build and test using internal checkout of mupdf 1.26.x branch from Github.
|
|
18
18
|
|
|
19
19
|
Usage:
|
|
20
20
|
scripts/test.py <options> <command(s)>
|
|
@@ -700,10 +700,7 @@ def build():
|
|
|
700
700
|
add('p', f'{mupdf_build_dir}/_mupdf.so', to_dir)
|
|
701
701
|
add('b', f'{mupdf_build_dir}/libmupdfcpp.so', to_dir)
|
|
702
702
|
add('b', f'{mupdf_build_dir}/libmupdf.dylib', to_dir)
|
|
703
|
-
|
|
704
|
-
# MuPDF-1.25+ language bindings build also builds
|
|
705
|
-
# libmupdf-threads.a.
|
|
706
|
-
add('d', f'{mupdf_build_dir}/libmupdf-threads.a', f'{to_dir_d}/lib/')
|
|
703
|
+
add('d', f'{mupdf_build_dir}/libmupdf-threads.a', f'{to_dir_d}/lib/')
|
|
707
704
|
elif pyodide:
|
|
708
705
|
add('p', f'{mupdf_build_dir}/_mupdf.so', to_dir)
|
|
709
706
|
add('b', f'{mupdf_build_dir}/libmupdfcpp.so', 'PyMuPDF.libs/')
|
|
@@ -712,10 +709,7 @@ def build():
|
|
|
712
709
|
add('p', f'{mupdf_build_dir}/_mupdf.so', to_dir)
|
|
713
710
|
add('b', pipcl.get_soname(f'{mupdf_build_dir}/libmupdfcpp.so'), to_dir)
|
|
714
711
|
add('b', pipcl.get_soname(f'{mupdf_build_dir}/libmupdf.so'), to_dir)
|
|
715
|
-
|
|
716
|
-
# MuPDF-1.25+ language bindings build also builds
|
|
717
|
-
# libmupdf-threads.a.
|
|
718
|
-
add('d', f'{mupdf_build_dir}/libmupdf-threads.a', f'{to_dir_d}/lib/')
|
|
712
|
+
add('d', f'{mupdf_build_dir}/libmupdf-threads.a', f'{to_dir_d}/lib/')
|
|
719
713
|
|
|
720
714
|
if 'd' in PYMUPDF_SETUP_FLAVOUR:
|
|
721
715
|
# Add MuPDF C and C++ headers to `ret_d`. Would prefer to use
|
|
@@ -802,10 +796,7 @@ def build_mupdf_windows(
|
|
|
802
796
|
tesseract = '' if os.environ.get('PYMUPDF_SETUP_MUPDF_TESSERACT') == '0' else 'tesseract-'
|
|
803
797
|
windows_build_tail = f'build\\shared-{tesseract}{build_type}'
|
|
804
798
|
if g_py_limited_api:
|
|
805
|
-
|
|
806
|
-
windows_build_tail += f'-Py_LIMITED_API_{pipcl.current_py_limited_api()}'
|
|
807
|
-
else:
|
|
808
|
-
windows_build_tail += f'-Py_LIMITED_API={pipcl.current_py_limited_api()}'
|
|
799
|
+
windows_build_tail += f'-Py_LIMITED_API_{pipcl.current_py_limited_api()}'
|
|
809
800
|
windows_build_tail += f'-x{wp.cpu.bits}-py{wp.version}'
|
|
810
801
|
windows_build_dir = f'{mupdf_local}\\{windows_build_tail}'
|
|
811
802
|
#log( f'Building mupdf.')
|
|
@@ -982,16 +973,12 @@ def build_mupdf_unix(
|
|
|
982
973
|
if (
|
|
983
974
|
linux
|
|
984
975
|
and os.environ.get('PYMUPDF_SETUP_MUPDF_BSYMBOLIC', '1') == '1'
|
|
985
|
-
and mupdf_version_tuple >= (1, 24, 3)
|
|
986
976
|
):
|
|
987
977
|
log(f'Appending `bsymbolic-` to MuPDF build path.')
|
|
988
978
|
build_prefix += 'bsymbolic-'
|
|
989
979
|
log(f'{g_py_limited_api=}')
|
|
990
980
|
if g_py_limited_api:
|
|
991
|
-
|
|
992
|
-
build_prefix += f'Py_LIMITED_API_{pipcl.current_py_limited_api()}-'
|
|
993
|
-
else:
|
|
994
|
-
build_prefix += f'Py_LIMITED_API={pipcl.current_py_limited_api()}-'
|
|
981
|
+
build_prefix += f'Py_LIMITED_API_{pipcl.current_py_limited_api()}-'
|
|
995
982
|
unix_build_dir = f'{mupdf_local}/build/{build_prefix}{build_type}'
|
|
996
983
|
# We need MuPDF's Python bindings, so we build MuPDF with
|
|
997
984
|
# `mupdf/scripts/mupdfwrap.py` instead of running `make`.
|
|
@@ -1242,15 +1229,15 @@ classifier = [
|
|
|
1242
1229
|
#
|
|
1243
1230
|
|
|
1244
1231
|
# PyMuPDF version.
|
|
1245
|
-
version_p = '1.
|
|
1232
|
+
version_p = '1.26.0'
|
|
1246
1233
|
|
|
1247
1234
|
# PyMuPDFb version. This is the PyMuPDF version whose PyMuPDFb wheels we will
|
|
1248
1235
|
# (re)use if generating separate PyMuPDFb wheels. Though as of PyMuPDF-1.24.11
|
|
1249
1236
|
# (2024-10-03) we no longer use PyMuPDFb wheels so this is actually unused.
|
|
1250
1237
|
#
|
|
1251
|
-
version_b = '1.
|
|
1238
|
+
version_b = '1.26.0'
|
|
1252
1239
|
|
|
1253
|
-
version_mupdf = '1.
|
|
1240
|
+
version_mupdf = '1.26.1'
|
|
1254
1241
|
|
|
1255
1242
|
if os.path.exists(f'{g_root}/{g_pymupdfb_sdist_marker}'):
|
|
1256
1243
|
|