PlotPy 2.7.4__tar.gz → 2.7.5__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 (523) hide show
  1. {plotpy-2.7.4 → plotpy-2.7.5}/CHANGELOG.md +15 -0
  2. {plotpy-2.7.4/PlotPy.egg-info → plotpy-2.7.5}/PKG-INFO +6 -4
  3. {plotpy-2.7.4 → plotpy-2.7.5/PlotPy.egg-info}/PKG-INFO +6 -4
  4. {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/SOURCES.txt +0 -1
  5. {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/requires.txt +5 -3
  6. {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/matplotlib_cmaps.py +1 -2
  7. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/contribute.rst +2 -7
  8. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/platforms.rst +3 -10
  9. {plotpy-2.7.4 → plotpy-2.7.5}/doc/requirements.rst +25 -19
  10. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/__init__.py +1 -1
  11. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/image.py +3 -3
  12. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/io.py +1 -2
  13. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/filter.py +1 -1
  14. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/image_items.py +1 -1
  15. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/masked.py +0 -1
  16. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/transform.py +1 -1
  17. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/colormap.py +3 -1
  18. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/contrastadjustment.py +1 -1
  19. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/csitem.py +1 -1
  20. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/interactive.py +1 -1
  21. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/histogram.py +1 -1
  22. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/image.py +1 -3
  23. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/shape.py +5 -5
  24. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image.py +1 -1
  25. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_transform.py +1 -1
  26. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/base.py +39 -0
  27. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/cross_section.py +1 -1
  28. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/curve.py +11 -27
  29. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/image.py +4 -28
  30. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/misc.py +1 -1
  31. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/_slider.py +2 -2
  32. {plotpy-2.7.4 → plotpy-2.7.5}/pyproject.toml +2 -2
  33. {plotpy-2.7.4 → plotpy-2.7.5}/qtdesigner/plotplugin.py +1 -0
  34. {plotpy-2.7.4 → plotpy-2.7.5}/requirements.txt +9 -8
  35. {plotpy-2.7.4 → plotpy-2.7.5}/src/histogram2d.c +4270 -3071
  36. {plotpy-2.7.4 → plotpy-2.7.5}/src/mandelbrot.c +4122 -2797
  37. plotpy-2.7.4/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
  38. {plotpy-2.7.4 → plotpy-2.7.5}/LICENSE +0 -0
  39. {plotpy-2.7.4 → plotpy-2.7.5}/MANIFEST.in +0 -0
  40. {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/dependency_links.txt +0 -0
  41. {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/entry_points.txt +0 -0
  42. {plotpy-2.7.4 → plotpy-2.7.5}/PlotPy.egg-info/top_level.txt +0 -0
  43. {plotpy-2.7.4 → plotpy-2.7.5}/README.md +0 -0
  44. {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/README.md +0 -0
  45. {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/_cm.py +0 -0
  46. {plotpy-2.7.4 → plotpy-2.7.5}/colormaps/colormap.py +0 -0
  47. {plotpy-2.7.4 → plotpy-2.7.5}/doc/_static/favicon.ico +0 -0
  48. {plotpy-2.7.4 → plotpy-2.7.5}/doc/changelog.rst +0 -0
  49. {plotpy-2.7.4 → plotpy-2.7.5}/doc/conf.py +0 -0
  50. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/build.rst +0 -0
  51. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/guiqwt_to_plotpy.csv +0 -0
  52. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/guiqwt_to_plotpy.rst +0 -0
  53. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/index.rst +0 -0
  54. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/v1_to_guidata_v3.csv +0 -0
  55. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/v1_to_v2.csv +0 -0
  56. {plotpy-2.7.4 → plotpy-2.7.5}/doc/dev/v1_to_v2.rst +0 -0
  57. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/colormapmanager.rst +0 -0
  58. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/events.rst +0 -0
  59. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/fit.rst +0 -0
  60. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/fliprotate.rst +0 -0
  61. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/imagefile.rst +0 -0
  62. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/index.rst +0 -0
  63. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/io.rst +0 -0
  64. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/builder.rst +0 -0
  65. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/examples.rst +0 -0
  66. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/index.rst +0 -0
  67. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/overview.rst +0 -0
  68. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/items/reference.rst +0 -0
  69. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/colormaps.rst +0 -0
  70. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/geometry.rst +0 -0
  71. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/index.rst +0 -0
  72. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/mathutils/scaler.rst +0 -0
  73. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/panels/index.rst +0 -0
  74. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/panels/overview.rst +0 -0
  75. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/panels/reference.rst +0 -0
  76. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/examples.rst +0 -0
  77. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/index.rst +0 -0
  78. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/overview.rst +0 -0
  79. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/plot/reference.rst +0 -0
  80. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/pyplot.rst +0 -0
  81. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/resizedialog.rst +0 -0
  82. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/rotatecrop.rst +0 -0
  83. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/selectdialog.rst +0 -0
  84. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/signals.rst +0 -0
  85. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/styles/index.rst +0 -0
  86. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/styles/overview.rst +0 -0
  87. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/styles/reference.rst +0 -0
  88. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/examples.rst +0 -0
  89. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/index.rst +0 -0
  90. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/overview.rst +0 -0
  91. {plotpy-2.7.4 → plotpy-2.7.5}/doc/features/tools/reference.rst +0 -0
  92. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/my_plot_manager.png +0 -0
  93. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/my_plot_manager.svg +0 -0
  94. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama-vertical.png +0 -0
  95. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama-vertical.svg +0 -0
  96. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama.png +0 -0
  97. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/panorama.svg +0 -0
  98. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plot_widgets.png +0 -0
  99. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plot_widgets.svg +0 -0
  100. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plotpy-banner.png +0 -0
  101. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/plotpy-vertical.png +0 -0
  102. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/__init__.png +0 -0
  103. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/computations.png +0 -0
  104. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/contrast.png +0 -0
  105. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/cross_section.png +0 -0
  106. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/cross_section2.png +0 -0
  107. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/dotarraydemo.png +0 -0
  108. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/filtertest1.png +0 -0
  109. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/filtertest2.png +0 -0
  110. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/fit.png +0 -0
  111. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/get_point.png +0 -0
  112. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/hist2d.png +0 -0
  113. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/image_plot_tools.png +0 -0
  114. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/imagefilter.png +0 -0
  115. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/imagesuperp.png +0 -0
  116. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/imagexy.png +0 -0
  117. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/manager.png +0 -0
  118. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/mandelbrot.png +0 -0
  119. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/pcolor.png +0 -0
  120. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/plot.png +0 -0
  121. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/simple_dialog.png +0 -0
  122. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/simple_window.png +0 -0
  123. {plotpy-2.7.4 → plotpy-2.7.5}/doc/images/screenshots/transform.png +0 -0
  124. {plotpy-2.7.4 → plotpy-2.7.5}/doc/index.rst +0 -0
  125. {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/examples.rst +0 -0
  126. {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/index.rst +0 -0
  127. {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/installation.rst +0 -0
  128. {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/licenses.rst +0 -0
  129. {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/motivation.rst +0 -0
  130. {plotpy-2.7.4 → plotpy-2.7.5}/doc/intro/overview.rst +0 -0
  131. {plotpy-2.7.4 → plotpy-2.7.5}/doc/update_requirements.py +0 -0
  132. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/__init__.py +0 -0
  133. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/annotation.py +0 -0
  134. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/curvemarker.py +0 -0
  135. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/label.py +0 -0
  136. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/plot.py +0 -0
  137. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/builder/shape.py +0 -0
  138. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/config.py +0 -0
  139. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/constants.py +0 -0
  140. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/coords.py +0 -0
  141. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/colormaps_default.json +0 -0
  142. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/apply.png +0 -0
  143. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/arredit.png +0 -0
  144. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/arrow_down.png +0 -0
  145. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/arrow_up.png +0 -0
  146. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/autorefresh.png +0 -0
  147. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/autoscale.png +0 -0
  148. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/axes.png +0 -0
  149. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/busy.png +0 -0
  150. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/cell_edit.png +0 -0
  151. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/center.png +0 -0
  152. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/cmap_edit.png +0 -0
  153. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/contrast.png +0 -0
  154. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/copy.png +0 -0
  155. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/copytoclipboard.png +0 -0
  156. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csapplylut.png +0 -0
  157. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csautoscale.png +0 -0
  158. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection.png +0 -0
  159. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection_a.png +0 -0
  160. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection_line.png +0 -0
  161. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csection_oblique.png +0 -0
  162. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/csperimage.png +0 -0
  163. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curve_downsample.png +0 -0
  164. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/dots.png +0 -0
  165. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/lines.png +0 -0
  166. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/steps.png +0 -0
  167. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvestyles/sticks.png +0 -0
  168. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvetypes/xfy.png +0 -0
  169. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/curvetypes/yfx.png +0 -0
  170. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/delete.png +0 -0
  171. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/edit.png +0 -0
  172. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/edit_point_selection.png +0 -0
  173. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/edit.png +0 -0
  174. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/edit_add.png +0 -0
  175. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/editcopy.png +0 -0
  176. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/editdelete.png +0 -0
  177. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/editpaste.png +0 -0
  178. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/fileimport.png +0 -0
  179. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/filesave.png +0 -0
  180. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/imshow.png +0 -0
  181. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/insert.png +0 -0
  182. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/plot.png +0 -0
  183. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/editors/rename.png +0 -0
  184. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/eliminate_outliers.png +0 -0
  185. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/eraser.png +0 -0
  186. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/exit.png +0 -0
  187. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/expander_down.png +0 -0
  188. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/expander_right.png +0 -0
  189. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/export.png +0 -0
  190. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/file.png +0 -0
  191. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/fileclose.png +0 -0
  192. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/fileimport.png +0 -0
  193. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filenew.png +0 -0
  194. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/fileopen.png +0 -0
  195. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filesave.png +0 -0
  196. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filesaveas.png +0 -0
  197. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/doc.png +0 -0
  198. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/gif.png +0 -0
  199. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/html.png +0 -0
  200. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/jpg.png +0 -0
  201. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/pdf.png +0 -0
  202. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/png.png +0 -0
  203. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/pps.png +0 -0
  204. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/ps.png +0 -0
  205. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/tar.png +0 -0
  206. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/tgz.png +0 -0
  207. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/tif.png +0 -0
  208. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/txt.png +0 -0
  209. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/xls.png +0 -0
  210. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/filetypes/zip.png +0 -0
  211. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/font.png +0 -0
  212. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/full_range.png +0 -0
  213. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/funct.png +0 -0
  214. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/hcursor.png +0 -0
  215. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/hflip.png +0 -0
  216. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/imagestats.png +0 -0
  217. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/item_list.png +0 -0
  218. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/annotation.png +0 -0
  219. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/curve.png +0 -0
  220. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/errorbar.png +0 -0
  221. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/grid.png +0 -0
  222. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/histogram.png +0 -0
  223. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/histogram2d.png +0 -0
  224. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/image.png +0 -0
  225. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/label.png +0 -0
  226. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/legend.png +0 -0
  227. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/items/polygonmap.png +0 -0
  228. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/magnifier.png +0 -0
  229. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/cross.png +0 -0
  230. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/diamond.png +0 -0
  231. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/ellipse.png +0 -0
  232. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/hexagon.png +0 -0
  233. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/point.png +0 -0
  234. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/square.png +0 -0
  235. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/star.png +0 -0
  236. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_d.png +0 -0
  237. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_l.png +0 -0
  238. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_r.png +0 -0
  239. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/triangle_u.png +0 -0
  240. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markers/xcross.png +0 -0
  241. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
  242. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
  243. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
  244. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_circle.png +0 -0
  245. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
  246. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
  247. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
  248. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/mask/mask_tool.png +0 -0
  249. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/max.png +0 -0
  250. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/min.png +0 -0
  251. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/move.png +0 -0
  252. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/multipoint_selection.png +0 -0
  253. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/none.png +0 -0
  254. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/not_found.png +0 -0
  255. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/on_curve.png +0 -0
  256. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
  257. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/crosspattern.png +0 -0
  258. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
  259. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
  260. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
  261. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
  262. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
  263. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
  264. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
  265. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
  266. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
  267. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/horpattern.png +0 -0
  268. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/nobrush.png +0 -0
  269. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/solidpattern.png +0 -0
  270. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/patterns/verpattern.png +0 -0
  271. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/plotpy-banner.svg +0 -0
  272. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/plotpy-vertical.svg +0 -0
  273. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/plotpy.svg +0 -0
  274. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/point_selection.png +0 -0
  275. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/print.png +0 -0
  276. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/python.png +0 -0
  277. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/quickview.png +0 -0
  278. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/refresh.png +0 -0
  279. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/save_all.png +0 -0
  280. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/lin_lin.png +0 -0
  281. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/lin_log.png +0 -0
  282. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/log_lin.png +0 -0
  283. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/scales/log_log.png +0 -0
  284. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/select.svg +0 -0
  285. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/select_area.svg +0 -0
  286. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/settings.png +0 -0
  287. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shape.png +0 -0
  288. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/circle.png +0 -0
  289. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/contour.png +0 -0
  290. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
  291. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/gtaxes.png +0 -0
  292. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/marker.png +0 -0
  293. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
  294. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/point_shape.png +0 -0
  295. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/polygon.png +0 -0
  296. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/polyline.png +0 -0
  297. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/rectangle.png +0 -0
  298. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/shapes/segment.png +0 -0
  299. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/snapshot.png +0 -0
  300. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dash.png +0 -0
  301. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dashdot.png +0 -0
  302. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dashdotdot.png +0 -0
  303. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/dot.png +0 -0
  304. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/styles/solid.png +0 -0
  305. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/trash.png +0 -0
  306. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/trimage_lock.png +0 -0
  307. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/trimage_unlock.png +0 -0
  308. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/vcursor.png +0 -0
  309. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/vflip.png +0 -0
  310. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xcursor.png +0 -0
  311. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xmax.png +0 -0
  312. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xmin.png +0 -0
  313. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/xrange.png +0 -0
  314. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/data/icons/zlog.svg +0 -0
  315. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/events.py +0 -0
  316. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/__init__.py +0 -0
  317. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/__init__.py +0 -0
  318. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_generic_range_slider.py +0 -0
  319. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_generic_slider.py +0 -0
  320. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_labeled.py +0 -0
  321. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_misc.py +0 -0
  322. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_range_style.py +0 -0
  323. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/external/sliders/_sliders.py +0 -0
  324. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/__init__.py +0 -0
  325. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/items.py +0 -0
  326. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/panel.py +0 -0
  327. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/interfaces/plotmanager.py +0 -0
  328. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/__init__.py +0 -0
  329. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/annotation.py +0 -0
  330. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/contour.py +0 -0
  331. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/curve/__init__.py +0 -0
  332. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/curve/base.py +0 -0
  333. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/curve/errorbar.py +0 -0
  334. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/grid.py +0 -0
  335. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/histogram.py +0 -0
  336. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/__init__.py +0 -0
  337. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/base.py +0 -0
  338. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/image/misc.py +0 -0
  339. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/label.py +0 -0
  340. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/polygonmap.py +0 -0
  341. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/__init__.py +0 -0
  342. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/axis.py +0 -0
  343. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/base.py +0 -0
  344. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/ellipse.py +0 -0
  345. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/marker.py +0 -0
  346. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/point.py +0 -0
  347. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/polygon.py +0 -0
  348. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/range.py +0 -0
  349. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/rectangle.py +0 -0
  350. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/segment.py +0 -0
  351. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/items/shape/svg.py +0 -0
  352. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/lutrange.py +0 -0
  353. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/__init__.py +0 -0
  354. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/arrayfuncs.py +0 -0
  355. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/geometry.py +0 -0
  356. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/mathutils/scaler.py +0 -0
  357. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/__init__.py +0 -0
  358. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/base.py +0 -0
  359. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/__init__.py +0 -0
  360. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/csplot.py +0 -0
  361. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/csection/cswidget.py +0 -0
  362. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/panels/itemlist.py +0 -0
  363. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/__init__.py +0 -0
  364. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/base.py +0 -0
  365. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/manager.py +0 -0
  366. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/plot/plotwidget.py +0 -0
  367. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/pyplot.py +0 -0
  368. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/__init__.py +0 -0
  369. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/axes.py +0 -0
  370. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/base.py +0 -0
  371. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/curve.py +0 -0
  372. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/errorbar.py +0 -0
  373. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/label.py +0 -0
  374. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/styles/polygonmap.py +0 -0
  375. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/__init__.py +0 -0
  376. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/__init__.py +0 -0
  377. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
  378. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
  379. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
  380. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/conftest.py +0 -0
  381. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/brain.png +0 -0
  382. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/brain_cylinder.png +0 -0
  383. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/mr-brain.dcm +0 -0
  384. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/svg_target.svg +0 -0
  385. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data/svg_tool.svg +0 -0
  386. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/data.py +0 -0
  387. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/__init__.py +0 -0
  388. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_auto_curve_image.py +0 -0
  389. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
  390. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_builder.py +0 -0
  391. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_colormap_editor.py +0 -0
  392. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_colormap_manager.py +0 -0
  393. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_computations.py +0 -0
  394. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_contrast.py +0 -0
  395. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_cursors.py +0 -0
  396. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_data_update_curve.py +0 -0
  397. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_data_update_image.py +0 -0
  398. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_dicom_image.py +0 -0
  399. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_fit.py +0 -0
  400. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_image_coords.py +0 -0
  401. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_image_filter.py +0 -0
  402. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_image_superp.py +0 -0
  403. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
  404. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
  405. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
  406. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_manager.py +0 -0
  407. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_no_auto_tools.py +0 -0
  408. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_plot_log.py +0 -0
  409. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_plot_types.py +0 -0
  410. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_plot_yreverse.py +0 -0
  411. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_pyplot.py +0 -0
  412. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/features/test_resize.py +0 -0
  413. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/__init__.py +0 -0
  414. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_annotations.py +0 -0
  415. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_curves.py +0 -0
  416. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_curves_highdpi.py +0 -0
  417. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_hist2d.py +0 -0
  418. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_histogram.py +0 -0
  419. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_contour.py +0 -0
  420. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_masked.py +0 -0
  421. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_masked_xy.py +0 -0
  422. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_rgb.py +0 -0
  423. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_image_xy.py +0 -0
  424. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_mandelbrot.py +0 -0
  425. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_pcolor.py +0 -0
  426. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_polygons.py +0 -0
  427. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/items/test_svgshapes.py +0 -0
  428. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/__init__.py +0 -0
  429. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_actiontool.py +0 -0
  430. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cross_section.py +0 -0
  431. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cross_section_line.py +0 -0
  432. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
  433. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
  434. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_cyclic_import.py +0 -0
  435. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_downsample_curve.py +0 -0
  436. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_edit_point.py +0 -0
  437. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_point.py +0 -0
  438. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_points.py +0 -0
  439. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_rectangle.py +0 -0
  440. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
  441. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_get_segment.py +0 -0
  442. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
  443. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_stats_tools.py +0 -0
  444. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/tools/test_zaxislog.py +0 -0
  445. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/__init__.py +0 -0
  446. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_annotation_tools.py +0 -0
  447. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
  448. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_baseplot.py +0 -0
  449. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_annotation.py +0 -0
  450. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_curve.py +0 -0
  451. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_image.py +0 -0
  452. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_builder_shape.py +0 -0
  453. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_contour.py +0 -0
  454. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_cursor_tools.py +0 -0
  455. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_curve_tools.py +0 -0
  456. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
  457. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_events.py +0 -0
  458. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_fontparam.py +0 -0
  459. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_geometry.py +0 -0
  460. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_io.py +0 -0
  461. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_line.py +0 -0
  462. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
  463. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_manipulate_selection.py +0 -0
  464. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_mask_tool.py +0 -0
  465. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_multiline_tools.py +0 -0
  466. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
  467. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_plot_curve.py +0 -0
  468. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_plot_image.py +0 -0
  469. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_rect_zoom.py +0 -0
  470. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_seg_dist.py +0 -0
  471. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_styles.py +0 -0
  472. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/test_tools_export.py +0 -0
  473. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/unit/utils.py +0 -0
  474. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/vistools.py +0 -0
  475. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/__init__.py +0 -0
  476. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
  477. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_filtertest1.py +0 -0
  478. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_filtertest2.py +0 -0
  479. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_fliprotate.py +0 -0
  480. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
  481. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
  482. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
  483. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
  484. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
  485. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
  486. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_simple_window.py +0 -0
  487. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_syncplot.py +0 -0
  488. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tests/widgets/test_theme.py +0 -0
  489. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/__init__.py +0 -0
  490. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/annotation.py +0 -0
  491. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/axes.py +0 -0
  492. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/cursor.py +0 -0
  493. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/item.py +0 -0
  494. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/label.py +0 -0
  495. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/plot.py +0 -0
  496. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/selection.py +0 -0
  497. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/tools/shape.py +0 -0
  498. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/__init__.py +0 -0
  499. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/about.py +0 -0
  500. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/basetransform.py +0 -0
  501. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/__init__.py +0 -0
  502. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/editor.py +0 -0
  503. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/manager.py +0 -0
  504. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/colormap/widget.py +0 -0
  505. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/fit.py +0 -0
  506. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/fliprotate.py +0 -0
  507. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/imagefile.py +0 -0
  508. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/qtdesigner.py +0 -0
  509. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/resizedialog.py +0 -0
  510. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/rotatecrop.py +0 -0
  511. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy/widgets/selectdialog.py +0 -0
  512. {plotpy-2.7.4 → plotpy-2.7.5}/plotpy-tests.desktop +0 -0
  513. {plotpy-2.7.4 → plotpy-2.7.5}/setup.cfg +0 -0
  514. {plotpy-2.7.4 → plotpy-2.7.5}/setup.py +0 -0
  515. {plotpy-2.7.4 → plotpy-2.7.5}/src/arrays.hpp +0 -0
  516. {plotpy-2.7.4 → plotpy-2.7.5}/src/debug.hpp +0 -0
  517. {plotpy-2.7.4 → plotpy-2.7.5}/src/histogram2d.pyx +0 -0
  518. {plotpy-2.7.4 → plotpy-2.7.5}/src/mandelbrot.pyx +0 -0
  519. {plotpy-2.7.4 → plotpy-2.7.5}/src/pcolor.cpp +0 -0
  520. {plotpy-2.7.4 → plotpy-2.7.5}/src/points.hpp +0 -0
  521. {plotpy-2.7.4 → plotpy-2.7.5}/src/scaler.cpp +0 -0
  522. {plotpy-2.7.4 → plotpy-2.7.5}/src/scaler.hpp +0 -0
  523. {plotpy-2.7.4 → plotpy-2.7.5}/src/traits.hpp +0 -0
@@ -1,5 +1,20 @@
1
1
  # Changelog #
2
2
 
3
+ ## Version 2.7.5 ##
4
+
5
+ 🛠️ Bug fixes:
6
+
7
+ * [Issue #44](https://github.com/PlotPyStack/PlotPy/issues/44) - Incorrect calculation method for "∑(y)" in `CurveStatsTool`: replaced `spt.trapezoid` with `np.sum`, which is more consistent with the summation operation
8
+ * Fix `update_status` method in all cross-section tools (intensity profile tools):
9
+ * Use `get_items` instead of `get_selected_items` to retrieve the image items
10
+ * This allows the tools to work properly when no image item is selected, but there are image items in the plot
11
+ * This closes [Issue #47](https://github.com/PlotPyStack/PlotPy/issues/47) - Intensity profile tools do not work when no image item is selected
12
+
13
+ Other changes:
14
+
15
+ * Updated `guidata` dependency to V3.10.0
16
+ * Using new `guidata` translation utility based on `babel`
17
+
3
18
  ## Version 2.7.4 ##
4
19
 
5
20
  In this release, test coverage is 80%.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PlotPy
3
- Version: 2.7.4
3
+ Version: 2.7.5
4
4
  Summary: Curve and image plotting tools for Python/Qt applications
5
5
  Author-email: Codra <p.raybaut@codra.fr>
6
6
  License: BSD 3-Clause License
@@ -62,17 +62,19 @@ Classifier: Topic :: Utilities
62
62
  Requires-Python: <4,>=3.9
63
63
  Description-Content-Type: text/markdown
64
64
  License-File: LICENSE
65
- Requires-Dist: guidata>=3.7
65
+ Requires-Dist: guidata>=3.10
66
66
  Requires-Dist: PythonQwt>=0.14
67
67
  Requires-Dist: SciPy>=1.5
68
68
  Requires-Dist: scikit-image>=0.18
69
69
  Requires-Dist: Pillow
70
70
  Requires-Dist: tifffile
71
71
  Provides-Extra: dev
72
- Requires-Dist: ruff; extra == "dev"
73
- Requires-Dist: pylint; extra == "dev"
72
+ Requires-Dist: babel; extra == "dev"
74
73
  Requires-Dist: Coverage; extra == "dev"
75
74
  Requires-Dist: Cython>=3.0; extra == "dev"
75
+ Requires-Dist: pylint; extra == "dev"
76
+ Requires-Dist: ruff; extra == "dev"
77
+ Requires-Dist: toml-to-requirements; extra == "dev"
76
78
  Provides-Extra: doc
77
79
  Requires-Dist: PyQt5; extra == "doc"
78
80
  Requires-Dist: sphinx; extra == "doc"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PlotPy
3
- Version: 2.7.4
3
+ Version: 2.7.5
4
4
  Summary: Curve and image plotting tools for Python/Qt applications
5
5
  Author-email: Codra <p.raybaut@codra.fr>
6
6
  License: BSD 3-Clause License
@@ -62,17 +62,19 @@ Classifier: Topic :: Utilities
62
62
  Requires-Python: <4,>=3.9
63
63
  Description-Content-Type: text/markdown
64
64
  License-File: LICENSE
65
- Requires-Dist: guidata>=3.7
65
+ Requires-Dist: guidata>=3.10
66
66
  Requires-Dist: PythonQwt>=0.14
67
67
  Requires-Dist: SciPy>=1.5
68
68
  Requires-Dist: scikit-image>=0.18
69
69
  Requires-Dist: Pillow
70
70
  Requires-Dist: tifffile
71
71
  Provides-Extra: dev
72
- Requires-Dist: ruff; extra == "dev"
73
- Requires-Dist: pylint; extra == "dev"
72
+ Requires-Dist: babel; extra == "dev"
74
73
  Requires-Dist: Coverage; extra == "dev"
75
74
  Requires-Dist: Cython>=3.0; extra == "dev"
75
+ Requires-Dist: pylint; extra == "dev"
76
+ Requires-Dist: ruff; extra == "dev"
77
+ Requires-Dist: toml-to-requirements; extra == "dev"
76
78
  Provides-Extra: doc
77
79
  Requires-Dist: PyQt5; extra == "doc"
78
80
  Requires-Dist: sphinx; extra == "doc"
@@ -337,7 +337,6 @@ plotpy/items/shape/range.py
337
337
  plotpy/items/shape/rectangle.py
338
338
  plotpy/items/shape/segment.py
339
339
  plotpy/items/shape/svg.py
340
- plotpy/locale/fr/LC_MESSAGES/plotpy.mo
341
340
  plotpy/mathutils/__init__.py
342
341
  plotpy/mathutils/arrayfuncs.py
343
342
  plotpy/mathutils/colormap.py
@@ -1,4 +1,4 @@
1
- guidata>=3.7
1
+ guidata>=3.10
2
2
  PythonQwt>=0.14
3
3
  SciPy>=1.5
4
4
  scikit-image>=0.18
@@ -6,10 +6,12 @@ Pillow
6
6
  tifffile
7
7
 
8
8
  [dev]
9
- ruff
10
- pylint
9
+ babel
11
10
  Coverage
12
11
  Cython>=3.0
12
+ pylint
13
+ ruff
14
+ toml-to-requirements
13
15
 
14
16
  [doc]
15
17
  PyQt5
@@ -116,7 +116,7 @@ SORTED_MATPLOTLIB_COLORMAPS: list[str] = [
116
116
 
117
117
 
118
118
  def rgb_colors_to_hex_list(
119
- colors: list[tuple[int, int, int]]
119
+ colors: list[tuple[int, int, int]],
120
120
  ) -> list[tuple[float, str]]:
121
121
  """Convert a list of RGB colors to a list of tuples with the position of the color
122
122
  and the color in hex format. Positions evenly distributed between 0 and 1.
@@ -261,7 +261,6 @@ def append_non_mpl_colormaps(mpl_colormaps: CmapDictType, colormaps: CmapDictTyp
261
261
 
262
262
 
263
263
  def main(cmaps: CmapDictType, out_json_path: str = DEFAULT_COLORMAPS_PATH):
264
-
265
264
  new_cmaps: dict[str, list[tuple[float, str]]] = {}
266
265
 
267
266
  # Uniform colormaps with a .colors attribute that return a list of RGB colors
@@ -93,14 +93,9 @@ development environment. The easiest way to do this is to use `virtualenv
93
93
  <http://pypi.python.org/pypi/virtualenv>`_ and `pip
94
94
  <http://pypi.python.org/pypi/pip>`_.
95
95
 
96
- Some parameters are required to be set before using the project from within
97
- Visual Studio Code (used in `launch.json` and `tasks.json`). These are:
96
+ Visual Studio Code `.env` file:
98
97
 
99
- * ``PPSTACK_PYTHONEXE``: The path to the Python interpreter to use. This is
100
- used to launch the application from within Visual Studio Code. If not set,
101
- the default Python interpreter will be used.
102
-
103
- * `.env` file: This file is used to set environment variables for the
98
+ * This file is used to set environment variables for the
104
99
  application. It is used to set the ``PYTHONPATH`` environment variable to
105
100
  the root of the project. This is required to be able to import the project
106
101
  modules from within Visual Studio Code. To create this file, copy the
@@ -37,12 +37,12 @@ which is the reference file for the project dependencies.
37
37
  Please note that the generation is not systematic and the ``requirements.txt``
38
38
  file may not be up-to-date.
39
39
 
40
- To update the ``requirements.txt`` file, you need to install the
41
- ``toml-to-requirements`` and execute the following command:
40
+ To update the ``requirements.txt`` file, use the Visual Studio task
41
+ ``Update requirements.txt`` or execute the following command:
42
42
 
43
43
  .. code-block:: bash
44
44
 
45
- toml-to-req --toml-file .\pyproject.toml --include-optional
45
+ toml-to-req --toml-file pyproject.toml --include-optional-lists dev,doc,test
46
46
 
47
47
 
48
48
  Microsoft Windows 10
@@ -75,13 +75,6 @@ That's it, you can now run the tests using the following command:
75
75
 
76
76
  pytest plotpy
77
77
 
78
- If you want to rely on Visual Studio Code for editing and take advantage of the
79
- project settings and tasks, you will need to set the following environment variable:
80
-
81
- .. code-block:: bash
82
-
83
- set PPSTACK_PYTHONEXE=C:\WPy64-31110\python-3.11.1.amd64\python.exe
84
-
85
78
  CentOS Stream 8.8
86
79
  ^^^^^^^^^^^^^^^^^
87
80
 
@@ -11,7 +11,7 @@ The :mod:`plotpy` package requires the following Python modules:
11
11
  - >=3.9, <4
12
12
  - Python programming language
13
13
  * - guidata
14
- - >=3.7
14
+ - >=3.10
15
15
  - Automatic GUI generation for easy dataset editing and display
16
16
  * - PythonQwt
17
17
  - >=0.14
@@ -23,10 +23,10 @@ The :mod:`plotpy` package requires the following Python modules:
23
23
  - >= 0.18
24
24
  - Image processing in Python
25
25
  * - Pillow
26
- -
26
+ -
27
27
  - Python Imaging Library (Fork)
28
28
  * - tifffile
29
- -
29
+ -
30
30
  - Read and write TIFF files
31
31
  * - PyQt5
32
32
  - >=5.11
@@ -41,18 +41,24 @@ Optional modules for development:
41
41
  * - Name
42
42
  - Version
43
43
  - Summary
44
- * - ruff
45
- -
46
- - An extremely fast Python linter and code formatter, written in Rust.
47
- * - pylint
48
- -
49
- - python code static checker
44
+ * - babel
45
+ -
46
+ - Internationalization utilities
50
47
  * - Coverage
51
- -
48
+ -
52
49
  - Code coverage measurement for Python
53
50
  * - Cython
54
- -
51
+ - >=3.0
55
52
  - The Cython compiler for writing C extensions in the Python language.
53
+ * - pylint
54
+ -
55
+ - python code static checker
56
+ * - ruff
57
+ -
58
+ - An extremely fast Python linter and code formatter, written in Rust.
59
+ * - toml-to-requirements
60
+ -
61
+ - Convert a pyproject.toml file to a requirements.txt file
56
62
 
57
63
  Optional modules for building the documentation:
58
64
 
@@ -64,22 +70,22 @@ Optional modules for building the documentation:
64
70
  - Version
65
71
  - Summary
66
72
  * - PyQt5
67
- -
73
+ -
68
74
  - Python bindings for the Qt cross platform application toolkit
69
75
  * - sphinx
70
- -
76
+ -
71
77
  - Python documentation generator
72
78
  * - myst_parser
73
- -
79
+ -
74
80
  - An extended [CommonMark](https://spec.commonmark.org/) compliant parser,
75
81
  * - sphinx-copybutton
76
- -
82
+ -
77
83
  - Add a copy button to each of your code cells.
78
84
  * - sphinx_qt_documentation
79
- -
85
+ -
80
86
  - Plugin for proper resolve intersphinx references for Qt elements
81
87
  * - python-docs-theme
82
- -
88
+ -
83
89
  - The Sphinx theme for the CPython docs and related projects
84
90
 
85
91
  Optional modules for running test suite:
@@ -92,8 +98,8 @@ Optional modules for running test suite:
92
98
  - Version
93
99
  - Summary
94
100
  * - pytest
95
- -
101
+ -
96
102
  - pytest: simple powerful testing with Python
97
103
  * - pytest-xvfb
98
- -
104
+ -
99
105
  - A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests.
@@ -20,7 +20,7 @@ External resources:
20
20
  .. _GitHub: https://github.com/PierreRaybaut/plotpy
21
21
  """
22
22
 
23
- __version__ = "2.7.4"
23
+ __version__ = "2.7.5"
24
24
  __VERSION__ = tuple([int(number) for number in __version__.split(".")])
25
25
 
26
26
  # --- Important note: DATAPATH and LOCALEPATH are used by guidata.configtools
@@ -247,9 +247,9 @@ class ImageBuilder:
247
247
  )
248
248
  assert data.ndim == 2, "Data must have 2 dimensions"
249
249
  if pixel_size is None:
250
- assert (
251
- center_on is None
252
- ), "Argument `pixel_size` must be specified when `center_on`"
250
+ assert center_on is None, (
251
+ "Argument `pixel_size` must be specified when `center_on`"
252
+ )
253
253
  xmin, xmax = xdata
254
254
  ymin, ymax = ydata
255
255
  else:
@@ -419,8 +419,7 @@ def _imread_dcm(filename, **kwargs):
419
419
  arr = arr.reshape(spp, dcm.Rows, dcm.Columns)
420
420
  else:
421
421
  raise NotImplementedError(
422
- "This code only handles "
423
- "SamplesPerPixel > 1 if Bits Allocated = 8"
422
+ "This code only handles SamplesPerPixel > 1 if Bits Allocated = 8"
424
423
  )
425
424
  else:
426
425
  arr = arr.reshape(dcm.Rows, dcm.Columns)
@@ -30,7 +30,7 @@ except ImportError:
30
30
  file=sys.stderr,
31
31
  )
32
32
  print(
33
- ("try running :" "python setup.py build_ext --inplace -c mingw32"),
33
+ ("try running :python setup.py build_ext --inplace -c mingw32"),
34
34
  file=sys.stderr,
35
35
  )
36
36
  raise
@@ -50,7 +50,7 @@ except ImportError:
50
50
  file=sys.stderr,
51
51
  )
52
52
  print(
53
- ("try running :" "python setup.py build_ext --inplace -c mingw32"),
53
+ ("try running :python setup.py build_ext --inplace -c mingw32"),
54
54
  file=sys.stderr,
55
55
  )
56
56
  raise
@@ -149,7 +149,6 @@ class MaskedImageMixin:
149
149
  def update_mask(self) -> None:
150
150
  """Update mask"""
151
151
  if isinstance(self.data, np.ma.MaskedArray):
152
-
153
152
  # Casting filling_value to data dtype, otherwise this may raise an error
154
153
  # in future versions of NumPy (at the time of writing, this raises a
155
154
  # DeprecationWarning "NumPy will stop allowing conversion of out-of-bound
@@ -26,7 +26,7 @@ except ImportError:
26
26
  file=sys.stderr,
27
27
  )
28
28
  print(
29
- ("try running :" "python setup.py build_ext --inplace -c mingw32"),
29
+ ("try running :python setup.py build_ext --inplace -c mingw32"),
30
30
  file=sys.stderr,
31
31
  )
32
32
  raise
@@ -136,7 +136,9 @@ DEFAULT_COLORMAPS_PATH = get_cmap_path(
136
136
  # Load custom colormaps path from the config file
137
137
  CUSTOM_COLORMAPS_PATH = get_cmap_path(
138
138
  CONF.get(
139
- "colormaps", "colormaps/custom", default="colormaps_custom.json" # type: ignore
139
+ "colormaps",
140
+ "colormaps/custom",
141
+ default="colormaps_custom.json", # type: ignore
140
142
  )
141
143
  )
142
144
 
@@ -543,7 +543,7 @@ class ContrastAdjustment(PanelWidget):
543
543
  _("Full range"),
544
544
  icon=get_icon("full_range.png"),
545
545
  triggered=self.histogram.set_full_range,
546
- tip=_("Scale the image's display range " "according to data range"),
546
+ tip=_("Scale the image's display range according to data range"),
547
547
  )
548
548
  outliers_ac = create_action(
549
549
  self,
@@ -28,7 +28,7 @@ except ImportError:
28
28
  file=sys.stderr,
29
29
  )
30
30
  print(
31
- ("try running :" "python setup.py build_ext --inplace -c mingw32"),
31
+ ("try running :python setup.py build_ext --inplace -c mingw32"),
32
32
  file=sys.stderr,
33
33
  )
34
34
  raise
@@ -829,7 +829,7 @@ def savefig(fname, format=None):
829
829
  format = fname.rsplit(".", 1)[-1].lower()
830
830
  fmts = [fmt.data().decode() for fmt in QG.QImageWriter.supportedImageFormats()]
831
831
  assert format in fmts, _(
832
- "Function 'savefig' currently supports the " "following formats:\n%s"
832
+ "Function 'savefig' currently supports the following formats:\n%s"
833
833
  ) % ", ".join(fmts)
834
834
  else:
835
835
  format = format.lower()
@@ -89,7 +89,7 @@ class Histogram2DParam(BaseImageParam):
89
89
  auto_lut = BoolItem(
90
90
  _("Automatic LUT range"),
91
91
  default=True,
92
- help=_("Automatically adapt color scale " "when panning, zooming"),
92
+ help=_("Automatically adapt color scale when panning, zooming"),
93
93
  )
94
94
  background = ColorItem(
95
95
  _("Background color"),
@@ -224,9 +224,7 @@ class QuadGridParam(DataSet):
224
224
  [(0, _("Quadrangle interpolation")), (1, _("Flat"))],
225
225
  default=0,
226
226
  help=_(
227
- "Image interpolation type, "
228
- "Flat mode use fixed u,v "
229
- "interpolation parameters"
227
+ "Image interpolation type, Flat mode use fixed u,v interpolation parameters"
230
228
  ),
231
229
  )
232
230
  uflat = FloatItem(
@@ -164,12 +164,12 @@ class ShapeParam(DataSet):
164
164
  readonly = BoolItem(
165
165
  _("Read-only shape"),
166
166
  default=False,
167
- help=_("Read-only shapes can't be removed from " "the item list panel"),
167
+ help=_("Read-only shapes can't be removed from the item list panel"),
168
168
  )
169
169
  private = BoolItem(
170
170
  _("Private shape"),
171
171
  default=False,
172
- help=_("Private shapes are not shown in " "the item list panel"),
172
+ help=_("Private shapes are not shown in the item list panel"),
173
173
  ).set_pos(col=1)
174
174
 
175
175
  def update_param(self, obj: PolygonShape) -> None:
@@ -305,7 +305,7 @@ class AnnotationParam(DataSet):
305
305
  _multiselection = False
306
306
  show_label = BoolItem(_("Show annotation"), default=True)
307
307
  show_computations = BoolItem(
308
- _("Show informations on area " "covered by this shape"), default=True
308
+ _("Show informations on area covered by this shape"), default=True
309
309
  )
310
310
  show_subtitle = BoolItem(_("Show subtitle"), default=True)
311
311
  title = StringItem(_("Title"), default="").set_prop(
@@ -328,12 +328,12 @@ class AnnotationParam(DataSet):
328
328
  readonly = BoolItem(
329
329
  _("Read-only shape"),
330
330
  default=False,
331
- help=_("Read-only shapes can't be removed from " "the item list panel"),
331
+ help=_("Read-only shapes can't be removed from the item list panel"),
332
332
  )
333
333
  private = BoolItem(
334
334
  _("Private shape"),
335
335
  default=False,
336
- help=_("Private shapes are not shown in " "the item list panel"),
336
+ help=_("Private shapes are not shown in the item list panel"),
337
337
  ).set_pos(col=1)
338
338
 
339
339
  def update_param(self, obj: AnnotatedShape) -> None:
@@ -17,7 +17,7 @@ from plotpy.tests import vistools as ptv
17
17
  def test_image():
18
18
  """Testing ImageItem object"""
19
19
  for index, func in enumerate((ptd.gen_image1, ptd.gen_image2, ptd.gen_image3)):
20
- title = test_image.__doc__ + f" #{index+1}"
20
+ title = test_image.__doc__ + f" #{index + 1}"
21
21
  data = func()
22
22
  with qt_app_context(exec_loop=True):
23
23
  _win = ptv.show_items([make.image(data)], wintitle=title)
@@ -184,7 +184,7 @@ def build_image(items: list[TrImageItem]) -> None:
184
184
  if not execenv.unattended:
185
185
  save_image("test1", dest)
186
186
  print("-" * 80)
187
- print(f"Assemble test1: {int(w/4)} x {int(h/4)}")
187
+ print(f"Assemble test1: {int(w / 4)} x {int(h / 4)}")
188
188
  dest = assemble_imageitems(items, r, w / 4, h / 4)
189
189
  if not execenv.unattended:
190
190
  save_image("test2", dest)
@@ -22,6 +22,8 @@ if TYPE_CHECKING:
22
22
 
23
23
  from qtpy.QtCore import QPointF
24
24
 
25
+ from plotpy.interfaces import ICurveItemType, IImageItemType
26
+ from plotpy.items import BaseImageItem, CurveItem
25
27
  from plotpy.plot import BasePlot, PlotManager
26
28
 
27
29
 
@@ -644,3 +646,40 @@ class RectangularActionTool(InteractiveTool):
644
646
  if self.switch_to_default_tool:
645
647
  shape = self.get_last_final_shape()
646
648
  plot.set_active_item(shape)
649
+
650
+
651
+ class LastItemHolder:
652
+ """Class to hold a weak reference to the last item"""
653
+
654
+ def __init__(self, item_type: IImageItemType | ICurveItemType) -> None:
655
+ self._item_type = item_type
656
+ self._last_item: weakref.ReferenceType[CurveItem | BaseImageItem] | None = None
657
+
658
+ def set(self, item: CurveItem | BaseImageItem) -> None:
659
+ """Set the last item
660
+
661
+ Args:
662
+ item: BaseImageItem instance
663
+ """
664
+ self._last_item = weakref.ref(item)
665
+
666
+ def get(self) -> CurveItem | BaseImageItem | None:
667
+ """Get the last item
668
+
669
+ Returns:
670
+ BaseImageItem instance or None
671
+ """
672
+ if self._last_item is not None:
673
+ return self._last_item()
674
+ return None
675
+
676
+ def update_from_selection(self, plot: BasePlot) -> CurveItem | BaseImageItem | None:
677
+ """Update the last item from the selected items of the plot, and return it.
678
+
679
+ Args:
680
+ plot: BasePlot instance
681
+ """
682
+ items = plot.get_selected_items(item_type=self._item_type)
683
+ if len(items) == 1:
684
+ self.set(items[0])
685
+ return self.get()
@@ -33,7 +33,7 @@ class CrossSectionTool(RectangularShapeTool):
33
33
  def update_status(self, plot: BasePlot) -> None:
34
34
  """Update status of the tool"""
35
35
  if update_image_tool_status(self, plot):
36
- item = plot.get_selected_items(item_type=IImageItemType)
36
+ item = plot.get_items(item_type=IImageItemType)
37
37
  self.action.setEnabled(len(item) > 0)
38
38
 
39
39
  def create_shape(self) -> AnnotatedPoint:
@@ -3,7 +3,6 @@
3
3
 
4
4
  from __future__ import annotations
5
5
 
6
- import weakref
7
6
  from typing import TYPE_CHECKING, Any, Callable
8
7
 
9
8
  import numpy as np
@@ -28,7 +27,12 @@ from plotpy.events import (
28
27
  from plotpy.interfaces import ICurveItemType
29
28
  from plotpy.items import Marker, XRangeSelection
30
29
  from plotpy.items.curve.base import CurveItem
31
- from plotpy.tools.base import DefaultToolbarID, InteractiveTool, ToggleTool
30
+ from plotpy.tools.base import (
31
+ DefaultToolbarID,
32
+ InteractiveTool,
33
+ LastItemHolder,
34
+ ToggleTool,
35
+ )
32
36
  from plotpy.tools.cursor import BaseCursorTool
33
37
 
34
38
  if TYPE_CHECKING:
@@ -66,7 +70,7 @@ class CurveStatsTool(BaseCursorTool):
66
70
  tip: str | None = None,
67
71
  ) -> None:
68
72
  super().__init__(manager, toolbar_id, title=title, icon=icon, tip=tip)
69
- self._last_item: weakref.ReferenceType[CurveItem] | None = None
73
+ self.last_item_holder = LastItemHolder(ICurveItemType)
70
74
  self.label: DataInfoLabel | None = None
71
75
  if labelfuncs is None:
72
76
  labelfuncs: tuple[tuple[str, Callable[..., Any]], ...] = (
@@ -74,7 +78,7 @@ class CurveStatsTool(BaseCursorTool):
74
78
  ("%g &lt; y &lt; %g", lambda *args: (args[1].min(), args[1].max())),
75
79
  ("&lt;y&gt;=%g", lambda *args: args[1].mean()),
76
80
  ("σ(y)=%g", lambda *args: args[1].std()),
77
- ("∑(y)=%g", lambda *args: spt.trapezoid(args[1])),
81
+ ("∑(y)=%g", lambda *args: np.sum(args[1])),
78
82
  ("∫ydx=%g", lambda *args: spt.trapezoid(args[1], args[0])),
79
83
  )
80
84
  self.labelfuncs = labelfuncs
@@ -96,18 +100,12 @@ class CurveStatsTool(BaseCursorTool):
96
100
  ("%g &lt; y &lt; %g", lambda *args: (args[1].min(), args[1].max())),
97
101
  ("&lt;y&gt;=%g", lambda *args: args[1].mean()),
98
102
  ("σ(y)=%g", lambda *args: args[1].std()),
99
- ("∑(y)=%g", lambda *args: spt.trapezoid(args[1])),
103
+ ("∑(y)=%g", lambda *args: np.sum(args[1])),
100
104
  ("∫ydx=%g", lambda *args: spt.trapezoid(args[1], args[0])),
101
105
  )
102
106
  """
103
107
  self.labelfuncs = labelfuncs
104
108
 
105
- def get_last_item(self) -> CurveItem | None:
106
- """Get last item on which the tool was used"""
107
- if self._last_item is not None:
108
- return self._last_item()
109
- return None
110
-
111
109
  def create_shape(self) -> XRangeSelection:
112
110
  """Create shape associated with the tool"""
113
111
  return XRangeSelection(0, 0)
@@ -119,7 +117,7 @@ class CurveStatsTool(BaseCursorTool):
119
117
  from plotpy.builder import make
120
118
 
121
119
  plot = self.manager.get_plot()
122
- curve = self.get_associated_item(plot)
120
+ curve = self.last_item_holder.update_from_selection(plot)
123
121
  specs = [(curve, label, func) for label, func in self.labelfuncs]
124
122
  title: QwtText = curve.title()
125
123
  label = make.computations(self.shape, "TL", specs, title.text())
@@ -151,27 +149,13 @@ class CurveStatsTool(BaseCursorTool):
151
149
  filter.plot.add_item_with_z_offset(self.label, SHAPE_Z_OFFSET)
152
150
  self.label = None
153
151
 
154
- def get_associated_item(self, plot: BasePlot) -> CurveItem | None:
155
- """Get associated item
156
-
157
- Args:
158
- plot: BasePlot instance
159
-
160
- Returns:
161
- curve item or None
162
- """
163
- items = plot.get_selected_items(item_type=ICurveItemType)
164
- if len(items) == 1:
165
- self._last_item = weakref.ref(items[0])
166
- return self.get_last_item()
167
-
168
152
  def update_status(self, plot: BasePlot) -> None:
169
153
  """Update tool status
170
154
 
171
155
  Args:
172
156
  plot: BasePlot instance
173
157
  """
174
- item = self.get_associated_item(plot)
158
+ item = self.last_item_holder.update_from_selection(plot)
175
159
  self.action.setEnabled(item is not None)
176
160
 
177
161