PyMuPDF 1.25.4__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.
Files changed (295) hide show
  1. {pymupdf-1.25.4 → pymupdf-1.26.0}/PKG-INFO +1 -1
  2. {pymupdf-1.25.4 → pymupdf-1.26.0}/changes.txt +51 -0
  3. {pymupdf-1.25.4 → pymupdf-1.26.0}/scripts/gh_release.py +1 -1
  4. {pymupdf-1.25.4 → pymupdf-1.26.0}/scripts/sysinstall.py +5 -0
  5. {pymupdf-1.25.4 → pymupdf-1.26.0}/scripts/test.py +14 -3
  6. {pymupdf-1.25.4 → pymupdf-1.26.0}/setup.py +7 -20
  7. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/__init__.py +295 -214
  8. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/extra.i +1 -1
  9. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/fitz___init__.py +1 -0
  10. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/table.py +145 -60
  11. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/utils.py +22 -12
  12. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/fitz_old.i +11 -3
  13. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-python.i +1 -1
  14. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/utils.py +9 -1
  15. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/conftest.py +3 -0
  16. pymupdf-1.26.0/tests/resources/test_4363.pdf +0 -0
  17. pymupdf-1.26.0/tests/resources/test_4415.pdf +0 -0
  18. pymupdf-1.26.0/tests/resources/test_4415_out_expected.png +0 -0
  19. pymupdf-1.26.0/tests/resources/test_4423.pdf +0 -0
  20. pymupdf-1.26.0/tests/resources/test_4435.pdf +0 -0
  21. pymupdf-1.26.0/tests/resources/test_4479.pdf +1469 -1
  22. pymupdf-1.26.0/tests/resources/test_4505.pdf +0 -0
  23. pymupdf-1.26.0/tests/resources/test_open2.cbz +0 -0
  24. pymupdf-1.26.0/tests/resources/test_open2.doc +0 -0
  25. pymupdf-1.26.0/tests/resources/test_open2.docx +0 -0
  26. pymupdf-1.26.0/tests/resources/test_open2.epub +0 -0
  27. pymupdf-1.26.0/tests/resources/test_open2.fb2 +64 -0
  28. pymupdf-1.26.0/tests/resources/test_open2.html +0 -0
  29. pymupdf-1.26.0/tests/resources/test_open2.jpg +0 -0
  30. pymupdf-1.26.0/tests/resources/test_open2.mobi +0 -0
  31. pymupdf-1.26.0/tests/resources/test_open2.pdf +0 -0
  32. pymupdf-1.26.0/tests/resources/test_open2.svg +18 -0
  33. pymupdf-1.26.0/tests/resources/test_open2.xhtml +17 -0
  34. pymupdf-1.26.0/tests/resources/test_open2.xml +21 -0
  35. pymupdf-1.26.0/tests/resources/test_open2.xps +0 -0
  36. pymupdf-1.26.0/tests/resources/test_open2_expected.json +808 -0
  37. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_2548.py +1 -4
  38. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_2907.py +0 -4
  39. pymupdf-1.26.0/tests/test_4466.pdf +0 -0
  40. pymupdf-1.26.0/tests/test_4505.py +27 -0
  41. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_annots.py +113 -29
  42. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_balance_count.py +1 -4
  43. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_font.py +106 -8
  44. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_general.py +257 -53
  45. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_mupdf_regressions.py +3 -21
  46. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_pixmap.py +75 -8
  47. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_story.py +1 -5
  48. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_tables.py +102 -30
  49. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_textbox.py +9 -3
  50. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_textextract.py +36 -14
  51. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_widgets.py +0 -4
  52. pymupdf-1.26.0/tests/util.py +28 -0
  53. {pymupdf-1.25.4 → pymupdf-1.26.0}/COPYING +0 -0
  54. {pymupdf-1.25.4 → pymupdf-1.26.0}/README.md +0 -0
  55. {pymupdf-1.25.4 → pymupdf-1.26.0}/READMEb.md +0 -0
  56. {pymupdf-1.25.4 → pymupdf-1.26.0}/READMEd.md +0 -0
  57. {pymupdf-1.25.4 → pymupdf-1.26.0}/pipcl.py +0 -0
  58. {pymupdf-1.25.4 → pymupdf-1.26.0}/pyproject.toml +0 -0
  59. {pymupdf-1.25.4 → pymupdf-1.26.0}/pytest.ini +0 -0
  60. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/__main__.py +0 -0
  61. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/_apply_pages.py +0 -0
  62. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/_wxcolors.py +0 -0
  63. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/fitz_table.py +0 -0
  64. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/fitz_utils.py +0 -0
  65. {pymupdf-1.25.4 → pymupdf-1.26.0}/src/pymupdf.py +0 -0
  66. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/__init__.py +0 -0
  67. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/__main__.py +0 -0
  68. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/_config.h +0 -0
  69. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-annot.i +0 -0
  70. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-convert.i +0 -0
  71. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-defines.i +0 -0
  72. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-devices.i +0 -0
  73. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-fields.i +0 -0
  74. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-fileobj.i +0 -0
  75. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-geo-c.i +0 -0
  76. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-geo-py.i +0 -0
  77. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-globals.i +0 -0
  78. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-other.i +0 -0
  79. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-pdfinfo.i +0 -0
  80. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-pixmap.i +0 -0
  81. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-portfolio.i +0 -0
  82. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-select.i +0 -0
  83. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-stext.i +0 -0
  84. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/helper-xobject.i +0 -0
  85. {pymupdf-1.25.4 → pymupdf-1.26.0}/src_classic/version.i +0 -0
  86. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/README.md +0 -0
  87. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/gentle_compare.py +0 -0
  88. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/001003ED.pdf +0 -0
  89. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/1.pdf +0 -0
  90. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/2.pdf +0 -0
  91. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/2201.00069.pdf +0 -0
  92. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/3.pdf +0 -0
  93. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/4.pdf +0 -0
  94. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/Bezier.epub +0 -0
  95. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/PragmaticaC.otf +0 -0
  96. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/battery-file-22.pdf +0 -0
  97. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/bug1945.pdf +0 -0
  98. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/bug1971.pdf +0 -0
  99. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/chinese-tables.pdf +0 -0
  100. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/chinese-tables.pickle +0 -0
  101. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/circular-toc.pdf +0 -0
  102. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/cms-etc-filled.pdf +0 -0
  103. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/cython.pdf +0 -0
  104. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/cython.pickle +0 -0
  105. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/dotted-gridlines.pdf +0 -0
  106. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/full_toc.txt +0 -0
  107. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/github_sample.pdf +0 -0
  108. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/has-bad-fonts.pdf +0 -0
  109. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/image-file1.pdf +0 -0
  110. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/img-regular.pdf +0 -0
  111. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/img-transparent.pdf +0 -0
  112. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/img-transparent.png +0 -0
  113. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/interfield-calculation.pdf +0 -0
  114. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/joined.pdf +0 -0
  115. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/merge-form1.pdf +0 -0
  116. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/merge-form2.pdf +0 -0
  117. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/metadata.txt +0 -0
  118. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/mupdf_explored.pdf +0 -0
  119. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/nur-ruhig.jpg +0 -0
  120. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/quad-calc-0.pdf +0 -0
  121. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/simple_toc.txt +0 -0
  122. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/small-table.pdf +0 -0
  123. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/strict-yes-no.pdf +0 -0
  124. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/symbol-list.pdf +0 -0
  125. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/symbols.txt +0 -0
  126. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-2333.pdf +0 -0
  127. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-2462.pdf +0 -0
  128. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-2812.pdf +0 -0
  129. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-3143.pdf +0 -0
  130. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-3150.pdf +0 -0
  131. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-3207.pdf +0 -0
  132. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-3591.pdf +0 -0
  133. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-3820.pdf +0 -0
  134. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-4055.pdf +0 -0
  135. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-707448.pdf +0 -0
  136. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-707673.pdf +0 -0
  137. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-E+A.pdf +0 -0
  138. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test-linebreaks.pdf +0 -0
  139. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test2093.pdf +0 -0
  140. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test2182.pdf +0 -0
  141. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test2238.pdf +0 -0
  142. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_1645_expected.pdf +0 -0
  143. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_1824.pdf +0 -0
  144. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2108.pdf +0 -0
  145. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2270.pdf +0 -0
  146. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2533.pdf +0 -0
  147. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2548.pdf +0 -0
  148. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2553-2.pdf +0 -0
  149. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2553.pdf +0 -0
  150. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2596.pdf +0 -0
  151. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2608_expected +0 -0
  152. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2634.pdf +0 -0
  153. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2635.pdf +0 -0
  154. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2645_1.pdf +0 -0
  155. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2645_2.pdf +0 -0
  156. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2645_3.pdf +0 -0
  157. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2710.pdf +0 -0
  158. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2730.pdf +0 -0
  159. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2742.pdf +0 -0
  160. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2788.pdf +0 -0
  161. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2791_content.pdf +0 -0
  162. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2791_coverpage.pdf +0 -0
  163. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2861.pdf +0 -0
  164. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2871.pdf +0 -0
  165. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2885.pdf +0 -0
  166. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2904.pdf +0 -0
  167. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2907.pdf +0 -0
  168. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2954.pdf +0 -0
  169. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2957_1.pdf +0 -0
  170. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2957_2.pdf +0 -0
  171. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2969.pdf +0 -0
  172. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_2979.pdf +0 -0
  173. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3050_expected.png +0 -0
  174. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3058.pdf +0 -0
  175. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3062.pdf +0 -0
  176. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3070.pdf +0 -0
  177. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3072.pdf +0 -0
  178. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3087.pdf +0 -0
  179. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3179.pdf +0 -0
  180. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3186.pdf +0 -0
  181. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3197.pdf +0 -0
  182. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3357.pdf +0 -0
  183. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3362.pdf +0 -0
  184. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3376.pdf +0 -0
  185. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3448.pdf +0 -0
  186. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3448.pdf-expected.png +0 -0
  187. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3450.pdf +0 -0
  188. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3493.epub +0 -0
  189. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3569.pdf +0 -0
  190. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3594.pdf +0 -0
  191. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3615.epub +0 -0
  192. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3624.pdf +0 -0
  193. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3624_expected.png +0 -0
  194. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3650.pdf +0 -0
  195. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3654.docx +0 -0
  196. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3677.pdf +0 -0
  197. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3687-3.epub +0 -0
  198. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3687.epub +0 -0
  199. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3705.pdf +0 -0
  200. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3725.pdf +0 -0
  201. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3727.pdf +0 -0
  202. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3780.pdf +0 -0
  203. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3789.pdf +0 -0
  204. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3842.pdf +0 -0
  205. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3848.pdf +0 -0
  206. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3854.pdf +0 -0
  207. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3854_expected.png +0 -0
  208. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf +0 -0
  209. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.0.png +0 -0
  210. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.1.png +0 -0
  211. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.2.png +0 -0
  212. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.3.png +0 -0
  213. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.4.png +0 -0
  214. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.5.png +0 -0
  215. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.6.png +0 -0
  216. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3863.pdf.pdf.7.png +0 -0
  217. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3886.pdf +0 -0
  218. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3887.pdf +0 -0
  219. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3933.pdf +0 -0
  220. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3950.pdf +0 -0
  221. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_3994.pdf +0 -0
  222. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4004.pdf +0 -0
  223. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4017.pdf +0 -0
  224. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4026.pdf +0 -0
  225. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4034.pdf +0 -0
  226. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4043.pdf +0 -0
  227. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4047.pdf +0 -0
  228. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4079.pdf +0 -0
  229. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4079_after.pdf +0 -0
  230. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4079_after_1.25.pdf +0 -0
  231. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4090.pdf +0 -0
  232. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4125.pdf +0 -0
  233. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4139.pdf +0 -0
  234. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4141.pdf +0 -0
  235. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4147.pdf +0 -0
  236. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4179.pdf +0 -0
  237. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4179_expected.png +0 -0
  238. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4180.pdf +0 -0
  239. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4180_expected.png +0 -0
  240. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4182.pdf +0 -0
  241. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4182_expected.png +0 -0
  242. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4224.pdf +0 -0
  243. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4245.pdf +0 -0
  244. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4245_expected.png +0 -0
  245. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_4263.pdf +0 -0
  246. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_annot_file_info.pdf +0 -0
  247. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_delete_image.pdf +0 -0
  248. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/test_toc_count.pdf +0 -0
  249. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/text-find-ligatures.pdf +0 -0
  250. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/type3font.pdf +0 -0
  251. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/v110-changes.pdf +0 -0
  252. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/resources/widgettest.pdf +0 -0
  253. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/run_compound.py +0 -0
  254. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_2634.py +0 -0
  255. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_2904.py +0 -0
  256. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_4141.py +0 -0
  257. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_badfonts.py +0 -0
  258. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_barcode.py +0 -0
  259. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_cluster_drawings.py +0 -0
  260. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_codespell.py +0 -0
  261. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_crypting.py +0 -0
  262. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_docs_samples.py +0 -0
  263. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_drawings.py +0 -0
  264. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_embeddedfiles.py +0 -0
  265. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_extractimage.py +0 -0
  266. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_flake8.py +0 -0
  267. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_geometry.py +0 -0
  268. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_imagebbox.py +0 -0
  269. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_imagemasks.py +0 -0
  270. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_import.py +0 -0
  271. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_insertimage.py +0 -0
  272. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_insertpdf.py +0 -0
  273. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_linebreaks.py +0 -0
  274. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_linequad.py +0 -0
  275. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_memory.py +0 -0
  276. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_metadata.py +0 -0
  277. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_named_links.py +0 -0
  278. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_nonpdf.py +0 -0
  279. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_object_manipulation.py +0 -0
  280. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_objectstreams.py +0 -0
  281. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_optional_content.py +0 -0
  282. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_page_links.py +0 -0
  283. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_pagedelete.py +0 -0
  284. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_pagelabels.py +0 -0
  285. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_pylint.py +0 -0
  286. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_remove-rotation.py +0 -0
  287. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_rtl.py +0 -0
  288. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_showpdfpage.py +0 -0
  289. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_spikes.py +0 -0
  290. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_tesseract.py +0 -0
  291. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_textsearch.py +0 -0
  292. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_toc.py +0 -0
  293. {pymupdf-1.25.4 → pymupdf-1.26.0}/tests/test_word_delimiters.py +0 -0
  294. {pymupdf-1.25.4 → pymupdf-1.26.0}/valgrind.supp +0 -0
  295. {pymupdf-1.25.4 → pymupdf-1.26.0}/wdev.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyMuPDF
3
- Version: 1.25.4
3
+ Version: 1.26.0
4
4
  Summary: A high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.
5
5
  Description-Content-Type: text/markdown
6
6
  Author: Artifex
@@ -2,8 +2,59 @@ 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
+
37
+ **Changes in version 1.25.5 (2025-03-31)**
38
+
39
+ * Fixed issues:
40
+
41
+ * **Fixed** `4372 <https://github.com/pymupdf/PyMuPDF/issues/4372>`_: Text insertion fails due to missing /Resources object
42
+ * **Fixed** `4400 <https://github.com/pymupdf/PyMuPDF/issues/4400>`_: Infinite loop in fill_textbox
43
+ * **Fixed** `4403 <https://github.com/pymupdf/PyMuPDF/issues/4403>`_: Unable to get_text() - layer/clip nesting too deep
44
+ * **Fixed** `4415 <https://github.com/pymupdf/PyMuPDF/issues/4415>`_: PDF page is mirrored, origin is at bottom-left
45
+
46
+ * Other:
47
+
48
+ * Use MuPDF-1.25.6.
49
+ * Fixed MuPDF SEGV on MacOS with particular fonts.
50
+ * Fixed `Annot.get_textpage()`'s `clip` arg.
51
+ * Fixed Python-3.14 (pre-release) build error.
52
+
53
+
5
54
  **Changes in version 1.25.4 (2025-03-14)**
6
55
 
56
+ * Use MuPDF-1.25.5.
57
+
7
58
  * Fixed issues:
8
59
 
9
60
  * **Fixed** `4079 <https://github.com/pymupdf/PyMuPDF/issues/4079>`_: Unexpected result for apply_redactions()
@@ -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.25.x https://github.com/ArtifexSoftware/mupdf.git' buildtest
17
- Build and test using internal checkout of mupdf 1.25.x branch from Github.
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)>
@@ -94,6 +94,8 @@ Options:
94
94
  Whether to rebuild mupdf when we build PyMuPDF. Default is 1.
95
95
  --gdb 0|1
96
96
  Run tests under gdb. Requires user interaction.
97
+ --pytest-prefix <command>
98
+ Use specified prefix when running pytest. E.g. `gdb --args`.
97
99
  --pybind 0|1
98
100
  Experimental, for investigating
99
101
  https://github.com/pymupdf/PyMuPDF/issues/3869. Runs run basic code
@@ -185,6 +187,7 @@ def main(argv):
185
187
  implementations = 'r'
186
188
  test_names = list()
187
189
  venv = 2
190
+ pytest_prefix = None
188
191
  pybind = False
189
192
  pytest_options = None
190
193
  timeout = None
@@ -222,7 +225,7 @@ def main(argv):
222
225
  implementations = next(args)
223
226
  elif arg in ('--mupdf', '-m'):
224
227
  mupdf = next(args)
225
- if not mupdf.startswith('git:') and mupdf != '-':
228
+ if not mupdf.startswith('git:') and '://' not in mupdf and mupdf != '-':
226
229
  assert os.path.isdir(mupdf), f'Not a directory: {mupdf=}.'
227
230
  mupdf = os.path.abspath(mupdf)
228
231
  os.environ['PYMUPDF_SETUP_MUPDF_BUILD'] = mupdf
@@ -236,6 +239,8 @@ def main(argv):
236
239
  value = next(args)
237
240
  assert value in ('0', '1'), f'`-s` must be followed by `0` or `1`, not {value=}.'
238
241
  os.environ['PYMUPDF_SETUP_PY_LIMITED_API'] = value
242
+ elif arg == '--pytest-prefix':
243
+ pytest_prefix = next(args)
239
244
  elif arg == '--pybind':
240
245
  pybind = int(next(args))
241
246
  elif arg == '--system-site-packages':
@@ -312,6 +317,7 @@ def main(argv):
312
317
  pytest_options=pytest_options,
313
318
  timeout=timeout,
314
319
  gdb=gdb,
320
+ pytest_prefix=pytest_prefix,
315
321
  test_fitz=test_fitz,
316
322
  pytest_k=pytest_k,
317
323
  pybind=pybind,
@@ -603,6 +609,7 @@ def test(
603
609
  pytest_options=None,
604
610
  timeout=None,
605
611
  gdb=False,
612
+ pytest_prefix=None,
606
613
  test_fitz=True,
607
614
  pytest_k=None,
608
615
  pybind=False,
@@ -624,6 +631,8 @@ def test(
624
631
  See top-level option `-p`.
625
632
  gdb:
626
633
  See top-level option `--gdb`.
634
+ pytest_prefix:
635
+ See top-level option `--pytest-prefix`.
627
636
  test_fitz:
628
637
  See top-level option `-f`.
629
638
  '''
@@ -732,6 +741,8 @@ def test(
732
741
  )
733
742
  elif gdb:
734
743
  command = f'{python} {pymupdf_dir_rel}/tests/run_compound.py{run_compound_args} gdb --args {python} -m pytest {pytest_options} {pytest_arg}'
744
+ elif pytest_prefix:
745
+ command = f'{python} {pymupdf_dir_rel}/tests/run_compound.py{run_compound_args} {pytest_prefix} {python} -m pytest {pytest_options} {pytest_arg}'
735
746
  elif platform.system() == 'Windows':
736
747
  # `python -m pytest` doesn't seem to work.
737
748
  command = f'{python} {pymupdf_dir_rel}/tests/run_compound.py{run_compound_args} pytest {pytest_options} {pytest_arg}'
@@ -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
- if mupdf_version_tuple >= (1, 25):
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
- if mupdf_version_tuple >= (1, 25):
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
- if get_mupdf_version(mupdf_local) >= (1, 24, 11):
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
- if get_mupdf_version(mupdf_local) >= (1, 24, 11):
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.25.4'
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.25.3'
1238
+ version_b = '1.26.0'
1252
1239
 
1253
- version_mupdf = '1.25.5'
1240
+ version_mupdf = '1.26.1'
1254
1241
 
1255
1242
  if os.path.exists(f'{g_root}/{g_pymupdfb_sdist_marker}'):
1256
1243