PlotPy 2.3.3__tar.gz → 2.3.4__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 (519) hide show
  1. {plotpy-2.3.3 → plotpy-2.3.4}/CHANGELOG.md +14 -0
  2. {plotpy-2.3.3/PlotPy.egg-info → plotpy-2.3.4}/PKG-INFO +2 -2
  3. {plotpy-2.3.3 → plotpy-2.3.4/PlotPy.egg-info}/PKG-INFO +2 -2
  4. {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/requires.txt +1 -1
  5. {plotpy-2.3.3 → plotpy-2.3.4}/conftest.py +10 -0
  6. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/__init__.py +1 -1
  7. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/curve/base.py +2 -2
  8. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/curve/errorbar.py +2 -2
  9. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/polygonmap.py +3 -3
  10. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_computations.py +5 -4
  11. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_annotation.py +27 -24
  12. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_curve.py +25 -17
  13. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_image.py +28 -18
  14. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_builder_shape.py +16 -12
  15. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_curve_tools.py +1 -1
  16. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_manipulate_selection.py +3 -0
  17. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_mask_tool.py +4 -1
  18. plotpy-2.3.4/plotpy/tests/unit/test_plot_curve.py +94 -0
  19. plotpy-2.3.4/plotpy/tests/unit/test_tools_export.py +36 -0
  20. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/curve.py +7 -2
  21. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/editor.py +3 -5
  22. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/manager.py +10 -3
  23. {plotpy-2.3.3 → plotpy-2.3.4}/pyproject.toml +8 -2
  24. {plotpy-2.3.3 → plotpy-2.3.4}/src/contour2d.c +405 -216
  25. {plotpy-2.3.3 → plotpy-2.3.4}/src/histogram2d.c +400 -208
  26. {plotpy-2.3.3 → plotpy-2.3.4}/src/mandelbrot.c +397 -208
  27. plotpy-2.3.3/plotpy/tests/unit/test_plot_curve.py +0 -87
  28. plotpy-2.3.3/plotpy/tests/unit/test_tools_export.py +0 -33
  29. {plotpy-2.3.3 → plotpy-2.3.4}/LICENSE +0 -0
  30. {plotpy-2.3.3 → plotpy-2.3.4}/MANIFEST.in +0 -0
  31. {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/SOURCES.txt +0 -0
  32. {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/dependency_links.txt +0 -0
  33. {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/entry_points.txt +0 -0
  34. {plotpy-2.3.3 → plotpy-2.3.4}/PlotPy.egg-info/top_level.txt +0 -0
  35. {plotpy-2.3.3 → plotpy-2.3.4}/README.md +0 -0
  36. {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/README.md +0 -0
  37. {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/_cm.py +0 -0
  38. {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/colormap.py +0 -0
  39. {plotpy-2.3.3 → plotpy-2.3.4}/colormaps/matplotlib_cmaps.py +0 -0
  40. {plotpy-2.3.3 → plotpy-2.3.4}/doc/_static/favicon.ico +0 -0
  41. {plotpy-2.3.3 → plotpy-2.3.4}/doc/changelog.rst +0 -0
  42. {plotpy-2.3.3 → plotpy-2.3.4}/doc/conf.py +0 -0
  43. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/build.rst +0 -0
  44. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/contribute.rst +0 -0
  45. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/guiqwt_to_plotpy.csv +0 -0
  46. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/guiqwt_to_plotpy.rst +0 -0
  47. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/index.rst +0 -0
  48. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/platforms.rst +0 -0
  49. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/v1_to_guidata_v3.csv +0 -0
  50. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/v1_to_v2.csv +0 -0
  51. {plotpy-2.3.3 → plotpy-2.3.4}/doc/dev/v1_to_v2.rst +0 -0
  52. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/colormapmanager.rst +0 -0
  53. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/events.rst +0 -0
  54. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/fit.rst +0 -0
  55. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/fliprotate.rst +0 -0
  56. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/imagefile.rst +0 -0
  57. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/index.rst +0 -0
  58. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/io.rst +0 -0
  59. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/builder.rst +0 -0
  60. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/examples.rst +0 -0
  61. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/index.rst +0 -0
  62. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/overview.rst +0 -0
  63. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/items/reference.rst +0 -0
  64. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/colormaps.rst +0 -0
  65. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/geometry.rst +0 -0
  66. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/index.rst +0 -0
  67. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/mathutils/scaler.rst +0 -0
  68. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/panels/index.rst +0 -0
  69. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/panels/overview.rst +0 -0
  70. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/panels/reference.rst +0 -0
  71. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/examples.rst +0 -0
  72. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/index.rst +0 -0
  73. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/overview.rst +0 -0
  74. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/plot/reference.rst +0 -0
  75. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/pyplot.rst +0 -0
  76. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/resizedialog.rst +0 -0
  77. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/rotatecrop.rst +0 -0
  78. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/selectdialog.rst +0 -0
  79. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/signals.rst +0 -0
  80. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/styles/index.rst +0 -0
  81. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/styles/overview.rst +0 -0
  82. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/styles/reference.rst +0 -0
  83. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/examples.rst +0 -0
  84. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/index.rst +0 -0
  85. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/overview.rst +0 -0
  86. {plotpy-2.3.3 → plotpy-2.3.4}/doc/features/tools/reference.rst +0 -0
  87. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/my_plot_manager.png +0 -0
  88. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/my_plot_manager.svg +0 -0
  89. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/panorama.png +0 -0
  90. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/panorama.svg +0 -0
  91. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plot_widgets.png +0 -0
  92. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plot_widgets.svg +0 -0
  93. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plotpy-banner.png +0 -0
  94. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/plotpy-vertical.png +0 -0
  95. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/__init__.png +0 -0
  96. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/computations.png +0 -0
  97. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/contrast.png +0 -0
  98. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/cross_section.png +0 -0
  99. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/cross_section2.png +0 -0
  100. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/dotarraydemo.png +0 -0
  101. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/filtertest1.png +0 -0
  102. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/filtertest2.png +0 -0
  103. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/fit.png +0 -0
  104. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/get_point.png +0 -0
  105. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/hist2d.png +0 -0
  106. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/image_plot_tools.png +0 -0
  107. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/imagefilter.png +0 -0
  108. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/imagesuperp.png +0 -0
  109. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/imagexy.png +0 -0
  110. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/manager.png +0 -0
  111. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/mandelbrot.png +0 -0
  112. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/pcolor.png +0 -0
  113. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/plot.png +0 -0
  114. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/simple_dialog.png +0 -0
  115. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/simple_window.png +0 -0
  116. {plotpy-2.3.3 → plotpy-2.3.4}/doc/images/screenshots/transform.png +0 -0
  117. {plotpy-2.3.3 → plotpy-2.3.4}/doc/index.rst +0 -0
  118. {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/examples.rst +0 -0
  119. {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/index.rst +0 -0
  120. {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/installation.rst +0 -0
  121. {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/licenses.rst +0 -0
  122. {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/motivation.rst +0 -0
  123. {plotpy-2.3.3 → plotpy-2.3.4}/doc/intro/overview.rst +0 -0
  124. {plotpy-2.3.3 → plotpy-2.3.4}/doc/requirements.rst +0 -0
  125. {plotpy-2.3.3 → plotpy-2.3.4}/doc/update_requirements.py +0 -0
  126. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/__init__.py +0 -0
  127. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/annotation.py +0 -0
  128. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/curvemarker.py +0 -0
  129. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/image.py +0 -0
  130. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/label.py +0 -0
  131. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/plot.py +0 -0
  132. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/builder/shape.py +0 -0
  133. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/config.py +0 -0
  134. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/constants.py +0 -0
  135. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/coords.py +0 -0
  136. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/colormaps_default.json +0 -0
  137. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/apply.png +0 -0
  138. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/arredit.png +0 -0
  139. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/arrow_down.png +0 -0
  140. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/arrow_up.png +0 -0
  141. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/autorefresh.png +0 -0
  142. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/autoscale.png +0 -0
  143. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/axes.png +0 -0
  144. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/busy.png +0 -0
  145. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/cell_edit.png +0 -0
  146. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/center.png +0 -0
  147. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/cmap_edit.png +0 -0
  148. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/contrast.png +0 -0
  149. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/copy.png +0 -0
  150. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/copytoclipboard.png +0 -0
  151. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csapplylut.png +0 -0
  152. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csautoscale.png +0 -0
  153. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection.png +0 -0
  154. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection_a.png +0 -0
  155. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection_line.png +0 -0
  156. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csection_oblique.png +0 -0
  157. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/csperimage.png +0 -0
  158. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curve_downsample.png +0 -0
  159. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/dots.png +0 -0
  160. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/lines.png +0 -0
  161. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/steps.png +0 -0
  162. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvestyles/sticks.png +0 -0
  163. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvetypes/xfy.png +0 -0
  164. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/curvetypes/yfx.png +0 -0
  165. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/delete.png +0 -0
  166. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/edit.png +0 -0
  167. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/edit_point_selection.png +0 -0
  168. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/edit.png +0 -0
  169. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/edit_add.png +0 -0
  170. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/editcopy.png +0 -0
  171. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/editdelete.png +0 -0
  172. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/editpaste.png +0 -0
  173. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/fileimport.png +0 -0
  174. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/filesave.png +0 -0
  175. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/imshow.png +0 -0
  176. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/insert.png +0 -0
  177. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/plot.png +0 -0
  178. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/editors/rename.png +0 -0
  179. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/eliminate_outliers.png +0 -0
  180. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/eraser.png +0 -0
  181. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/exit.png +0 -0
  182. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/expander_down.png +0 -0
  183. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/expander_right.png +0 -0
  184. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/export.png +0 -0
  185. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/file.png +0 -0
  186. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/fileclose.png +0 -0
  187. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/fileimport.png +0 -0
  188. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filenew.png +0 -0
  189. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/fileopen.png +0 -0
  190. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filesave.png +0 -0
  191. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filesaveas.png +0 -0
  192. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/doc.png +0 -0
  193. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/gif.png +0 -0
  194. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/html.png +0 -0
  195. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/jpg.png +0 -0
  196. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/pdf.png +0 -0
  197. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/png.png +0 -0
  198. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/pps.png +0 -0
  199. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/ps.png +0 -0
  200. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/tar.png +0 -0
  201. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/tgz.png +0 -0
  202. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/tif.png +0 -0
  203. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/txt.png +0 -0
  204. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/xls.png +0 -0
  205. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/filetypes/zip.png +0 -0
  206. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/font.png +0 -0
  207. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/full_range.png +0 -0
  208. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/funct.png +0 -0
  209. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/hcursor.png +0 -0
  210. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/hflip.png +0 -0
  211. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/imagestats.png +0 -0
  212. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/item_list.png +0 -0
  213. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/annotation.png +0 -0
  214. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/curve.png +0 -0
  215. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/errorbar.png +0 -0
  216. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/grid.png +0 -0
  217. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/histogram.png +0 -0
  218. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/histogram2d.png +0 -0
  219. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/image.png +0 -0
  220. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/label.png +0 -0
  221. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/legend.png +0 -0
  222. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/items/polygonmap.png +0 -0
  223. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/magnifier.png +0 -0
  224. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/cross.png +0 -0
  225. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/diamond.png +0 -0
  226. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/ellipse.png +0 -0
  227. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/hexagon.png +0 -0
  228. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/point.png +0 -0
  229. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/square.png +0 -0
  230. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/star.png +0 -0
  231. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_d.png +0 -0
  232. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_l.png +0 -0
  233. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_r.png +0 -0
  234. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/triangle_u.png +0 -0
  235. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markers/xcross.png +0 -0
  236. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markerstyles/cross_marker.png +0 -0
  237. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markerstyles/horiz_marker.png +0 -0
  238. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/markerstyles/vert_marker.png +0 -0
  239. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_circle.png +0 -0
  240. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_circle_outside.png +0 -0
  241. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_rectangle.png +0 -0
  242. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_rectangle_outside.png +0 -0
  243. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/mask/mask_tool.png +0 -0
  244. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/max.png +0 -0
  245. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/min.png +0 -0
  246. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/move.png +0 -0
  247. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/multipoint_selection.png +0 -0
  248. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/none.png +0 -0
  249. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/not_found.png +0 -0
  250. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/on_curve.png +0 -0
  251. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/bdiagpattern.png +0 -0
  252. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/crosspattern.png +0 -0
  253. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense1pattern.png +0 -0
  254. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense2pattern.png +0 -0
  255. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense3pattern.png +0 -0
  256. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense4pattern.png +0 -0
  257. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense5pattern.png +0 -0
  258. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense6pattern.png +0 -0
  259. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/dense7pattern.png +0 -0
  260. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/diagcrosspattern.png +0 -0
  261. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/fdiagpattern.png +0 -0
  262. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/horpattern.png +0 -0
  263. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/nobrush.png +0 -0
  264. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/solidpattern.png +0 -0
  265. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/patterns/verpattern.png +0 -0
  266. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/plotpy-banner.svg +0 -0
  267. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/plotpy-vertical.svg +0 -0
  268. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/plotpy.svg +0 -0
  269. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/point_selection.png +0 -0
  270. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/print.png +0 -0
  271. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/python.png +0 -0
  272. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/quickview.png +0 -0
  273. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/rectangular_select.png +0 -0
  274. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/refresh.png +0 -0
  275. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/save_all.png +0 -0
  276. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/lin_lin.png +0 -0
  277. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/lin_log.png +0 -0
  278. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/log_lin.png +0 -0
  279. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/scales/log_log.png +0 -0
  280. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/selection.png +0 -0
  281. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/settings.png +0 -0
  282. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shape.png +0 -0
  283. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/circle.png +0 -0
  284. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/contour.png +0 -0
  285. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/ellipse_shape.png +0 -0
  286. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/freeform.png +0 -0
  287. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/gtaxes.png +0 -0
  288. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/marker.png +0 -0
  289. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/oblique_rectangle.png +0 -0
  290. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/point_shape.png +0 -0
  291. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/polyline.png +0 -0
  292. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/rectangle.png +0 -0
  293. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/shapes/segment.png +0 -0
  294. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/snapshot.png +0 -0
  295. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dash.png +0 -0
  296. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dashdot.png +0 -0
  297. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dashdotdot.png +0 -0
  298. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/dot.png +0 -0
  299. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/styles/solid.png +0 -0
  300. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/trash.png +0 -0
  301. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/trimage_lock.png +0 -0
  302. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/trimage_unlock.png +0 -0
  303. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/vcursor.png +0 -0
  304. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/vflip.png +0 -0
  305. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xcursor.png +0 -0
  306. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xmax.png +0 -0
  307. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xmin.png +0 -0
  308. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/data/icons/xrange.png +0 -0
  309. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/events.py +0 -0
  310. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/__init__.py +0 -0
  311. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/__init__.py +0 -0
  312. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_generic_range_slider.py +0 -0
  313. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_generic_slider.py +0 -0
  314. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_labeled.py +0 -0
  315. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_misc.py +0 -0
  316. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_range_style.py +0 -0
  317. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/external/sliders/_sliders.py +0 -0
  318. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/__init__.py +0 -0
  319. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/items.py +0 -0
  320. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/panel.py +0 -0
  321. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/interfaces/plotmanager.py +0 -0
  322. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/io.py +0 -0
  323. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/__init__.py +0 -0
  324. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/annotation.py +0 -0
  325. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/contour.py +0 -0
  326. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/curve/__init__.py +0 -0
  327. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/grid.py +0 -0
  328. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/histogram.py +0 -0
  329. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/__init__.py +0 -0
  330. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/base.py +0 -0
  331. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/filter.py +0 -0
  332. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/image_items.py +0 -0
  333. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/masked.py +0 -0
  334. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/misc.py +0 -0
  335. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/image/transform.py +0 -0
  336. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/label.py +0 -0
  337. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/__init__.py +0 -0
  338. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/axis.py +0 -0
  339. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/base.py +0 -0
  340. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/ellipse.py +0 -0
  341. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/marker.py +0 -0
  342. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/point.py +0 -0
  343. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/polygon.py +0 -0
  344. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/range.py +0 -0
  345. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/rectangle.py +0 -0
  346. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/segment.py +0 -0
  347. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/items/shape/svg.py +0 -0
  348. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/locale/fr/LC_MESSAGES/plotpy.mo +0 -0
  349. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/lutrange.py +0 -0
  350. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/__init__.py +0 -0
  351. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/arrayfuncs.py +0 -0
  352. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/colormap.py +0 -0
  353. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/geometry.py +0 -0
  354. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/mathutils/scaler.py +0 -0
  355. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/__init__.py +0 -0
  356. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/base.py +0 -0
  357. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/contrastadjustment.py +0 -0
  358. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/__init__.py +0 -0
  359. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/csitem.py +0 -0
  360. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/csplot.py +0 -0
  361. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/csection/cswidget.py +0 -0
  362. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/panels/itemlist.py +0 -0
  363. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/__init__.py +0 -0
  364. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/base.py +0 -0
  365. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/interactive.py +0 -0
  366. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/manager.py +0 -0
  367. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/plot/plotwidget.py +0 -0
  368. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/pyplot.py +0 -0
  369. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/__init__.py +0 -0
  370. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/axes.py +0 -0
  371. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/base.py +0 -0
  372. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/curve.py +0 -0
  373. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/errorbar.py +0 -0
  374. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/histogram.py +0 -0
  375. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/image.py +0 -0
  376. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/label.py +0 -0
  377. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/polygonmap.py +0 -0
  378. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/styles/shape.py +0 -0
  379. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/__init__.py +0 -0
  380. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/__init__.py +0 -0
  381. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/test_benchmarks.py +0 -0
  382. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/test_bigimages.py +0 -0
  383. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/benchmarks/test_loadtest.py +0 -0
  384. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/brain.png +0 -0
  385. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/brain_cylinder.png +0 -0
  386. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/mr-brain.dcm +0 -0
  387. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/svg_target.svg +0 -0
  388. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data/svg_tool.svg +0 -0
  389. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/data.py +0 -0
  390. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/__init__.py +0 -0
  391. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_auto_curve_image.py +0 -0
  392. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_autoscale_shapes.py +0 -0
  393. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_builder.py +0 -0
  394. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_colormap_editor.py +0 -0
  395. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_colormap_manager.py +0 -0
  396. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_contrast.py +0 -0
  397. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_cursors.py +0 -0
  398. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_dicom_image.py +0 -0
  399. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_fit.py +0 -0
  400. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_image_coords.py +0 -0
  401. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_imagefilter.py +0 -0
  402. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_imagesuperp.py +0 -0
  403. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_loadsaveitems_hdf5.py +0 -0
  404. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_loadsaveitems_json.py +0 -0
  405. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_loadsaveitems_pickle.py +0 -0
  406. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_manager.py +0 -0
  407. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_no_auto_tools.py +0 -0
  408. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_plot_log.py +0 -0
  409. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_plot_types.py +0 -0
  410. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_plot_yreverse.py +0 -0
  411. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_pyplot.py +0 -0
  412. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/features/test_resize.py +0 -0
  413. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/__init__.py +0 -0
  414. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_annotations.py +0 -0
  415. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_curves.py +0 -0
  416. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_curves_highdpi.py +0 -0
  417. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_hist2d.py +0 -0
  418. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_histogram.py +0 -0
  419. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image.py +0 -0
  420. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_contour.py +0 -0
  421. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_masked.py +0 -0
  422. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_masked_xy.py +0 -0
  423. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_rgb.py +0 -0
  424. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_image_xy.py +0 -0
  425. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_mandelbrot.py +0 -0
  426. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_pcolor.py +0 -0
  427. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_polygons.py +0 -0
  428. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_svgshapes.py +0 -0
  429. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/items/test_transform.py +0 -0
  430. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/__init__.py +0 -0
  431. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_actiontool.py +0 -0
  432. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_cross_section.py +0 -0
  433. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_cross_section_line.py +0 -0
  434. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_cross_section_oblique.py +0 -0
  435. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_customize_shape_tool.py +0 -0
  436. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_downsample_curve.py +0 -0
  437. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_edit_point.py +0 -0
  438. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_point.py +0 -0
  439. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_points.py +0 -0
  440. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_rectangle.py +0 -0
  441. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_rectangle_with_svg.py +0 -0
  442. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_get_segment.py +0 -0
  443. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/tools/test_image_plot_tools.py +0 -0
  444. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/__init__.py +0 -0
  445. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_annotation_tools.py +0 -0
  446. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_aspect_ratio_tool.py +0 -0
  447. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_baseplot.py +0 -0
  448. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_contour.py +0 -0
  449. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_cursor_tools.py +0 -0
  450. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_display_coords_tool.py +0 -0
  451. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_events.py +0 -0
  452. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_fontparam.py +0 -0
  453. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_geometry.py +0 -0
  454. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_highprecisionxy.py +0 -0
  455. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_io.py +0 -0
  456. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_line.py +0 -0
  457. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_line_cross_section_tool.py +0 -0
  458. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_multiline_tools.py +0 -0
  459. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_oblique_cross_section_tool.py +0 -0
  460. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_plot_image.py +0 -0
  461. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_rect_zoom.py +0 -0
  462. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_seg_dist.py +0 -0
  463. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/test_styles.py +0 -0
  464. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/unit/utils.py +0 -0
  465. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/vistools.py +0 -0
  466. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/__init__.py +0 -0
  467. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_dotarraydemo.py +0 -0
  468. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_filtertest1.py +0 -0
  469. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_filtertest2.py +0 -0
  470. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_fliprotate.py +0 -0
  471. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_plot_timecurve.py +0 -0
  472. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_qtdesigner.py +0 -0
  473. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_qtdesigner.ui +0 -0
  474. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_resize_dialog.py +0 -0
  475. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_rotatecrop.py +0 -0
  476. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_simple_dialog.py +0 -0
  477. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_simple_window.py +0 -0
  478. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tests/widgets/test_syncplot.py +0 -0
  479. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/__init__.py +0 -0
  480. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/annotation.py +0 -0
  481. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/axes.py +0 -0
  482. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/base.py +0 -0
  483. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/cross_section.py +0 -0
  484. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/cursor.py +0 -0
  485. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/image.py +0 -0
  486. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/item.py +0 -0
  487. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/label.py +0 -0
  488. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/misc.py +0 -0
  489. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/plot.py +0 -0
  490. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/selection.py +0 -0
  491. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/tools/shape.py +0 -0
  492. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/__init__.py +0 -0
  493. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/about.py +0 -0
  494. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/basetransform.py +0 -0
  495. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/__init__.py +0 -0
  496. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/_slider.py +0 -0
  497. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/colormap/widget.py +0 -0
  498. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/fit.py +0 -0
  499. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/fliprotate.py +0 -0
  500. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/imagefile.py +0 -0
  501. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/qtdesigner.py +0 -0
  502. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/resizedialog.py +0 -0
  503. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/rotatecrop.py +0 -0
  504. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy/widgets/selectdialog.py +0 -0
  505. {plotpy-2.3.3 → plotpy-2.3.4}/plotpy-tests.desktop +0 -0
  506. {plotpy-2.3.3 → plotpy-2.3.4}/qtdesigner/plotplugin.py +0 -0
  507. {plotpy-2.3.3 → plotpy-2.3.4}/requirements.txt +0 -0
  508. {plotpy-2.3.3 → plotpy-2.3.4}/setup.cfg +0 -0
  509. {plotpy-2.3.3 → plotpy-2.3.4}/setup.py +0 -0
  510. {plotpy-2.3.3 → plotpy-2.3.4}/src/arrays.hpp +0 -0
  511. {plotpy-2.3.3 → plotpy-2.3.4}/src/contour2d.pyx +0 -0
  512. {plotpy-2.3.3 → plotpy-2.3.4}/src/debug.hpp +0 -0
  513. {plotpy-2.3.3 → plotpy-2.3.4}/src/histogram2d.pyx +0 -0
  514. {plotpy-2.3.3 → plotpy-2.3.4}/src/mandelbrot.pyx +0 -0
  515. {plotpy-2.3.3 → plotpy-2.3.4}/src/pcolor.cpp +0 -0
  516. {plotpy-2.3.3 → plotpy-2.3.4}/src/points.hpp +0 -0
  517. {plotpy-2.3.3 → plotpy-2.3.4}/src/scaler.cpp +0 -0
  518. {plotpy-2.3.3 → plotpy-2.3.4}/src/scaler.hpp +0 -0
  519. {plotpy-2.3.3 → plotpy-2.3.4}/src/traits.hpp +0 -0
@@ -1,5 +1,19 @@
1
1
  # Changelog #
2
2
 
3
+ ## Version 2.3.4 ##
4
+
5
+ In this release, test coverage is 79%.
6
+
7
+ 🛠️ Bug fixes:
8
+
9
+ * Add support for NumPy 2.0:
10
+ * Updated build system to use NumPy 2.0 on Python > 3.8 and NumPy 1 on Python 3.8
11
+ * Use `numpy.asarray` instead of `numpy.array(..., copy=False)`
12
+ * Use `numpy.isin` instead of `numpy.in1d`
13
+ * Use `scipy.integrate.trapezoid` instead of `numpy.trapz`
14
+
15
+ * `ColorMapManager`: fix segmentation fault with PySide6 on Linux
16
+
3
17
  ## Version 2.3.3 ##
4
18
 
5
19
  In this release, test coverage is 79%.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PlotPy
3
- Version: 2.3.3
3
+ Version: 2.3.4
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
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
64
64
  License-File: LICENSE
65
65
  Requires-Dist: guidata>=3.4
66
66
  Requires-Dist: PythonQwt>=0.12.1
67
- Requires-Dist: NumPy<2,>=1.17
67
+ Requires-Dist: NumPy>=1.17
68
68
  Requires-Dist: SciPy>=1.3
69
69
  Requires-Dist: Pillow
70
70
  Requires-Dist: tifffile
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PlotPy
3
- Version: 2.3.3
3
+ Version: 2.3.4
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
@@ -64,7 +64,7 @@ Description-Content-Type: text/markdown
64
64
  License-File: LICENSE
65
65
  Requires-Dist: guidata>=3.4
66
66
  Requires-Dist: PythonQwt>=0.12.1
67
- Requires-Dist: NumPy<2,>=1.17
67
+ Requires-Dist: NumPy>=1.17
68
68
  Requires-Dist: SciPy>=1.3
69
69
  Requires-Dist: Pillow
70
70
  Requires-Dist: tifffile
@@ -1,6 +1,6 @@
1
1
  guidata>=3.4
2
2
  PythonQwt>=0.12.1
3
- NumPy<2,>=1.17
3
+ NumPy>=1.17
4
4
  SciPy>=1.3
5
5
  Pillow
6
6
  tifffile
@@ -1,7 +1,13 @@
1
1
  # content of conftest.py
2
2
 
3
3
  import guidata
4
+ import h5py
5
+ import numpy
6
+ import PIL
4
7
  import qtpy
8
+ import qwt
9
+ import scipy
10
+ import tifffile
5
11
  from guidata.env import execenv
6
12
 
7
13
  import plotpy
@@ -18,5 +24,9 @@ def pytest_report_header(config):
18
24
  qtbindings_version = qtpy.PYQT_VERSION
19
25
  return [
20
26
  f"PlotPy {plotpy.__version__}, guidata {guidata.__version__}, "
27
+ f"PythonQwt {qwt.__version__}, "
21
28
  f"{qtpy.API_NAME} {qtbindings_version} [Qt version: {qtpy.QT_VERSION}]",
29
+ f"NumPy {numpy.__version__}, SciPy {scipy.__version__}, "
30
+ f"h5py {h5py.__version__}, "
31
+ f"Pillow {PIL.__version__}, tifffile {tifffile.__version__}",
22
32
  ]
@@ -20,7 +20,7 @@ External resources:
20
20
  .. _GitHub: https://github.com/PierreRaybaut/plotpy
21
21
  """
22
22
 
23
- __version__ = "2.3.3"
23
+ __version__ = "2.3.4"
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
@@ -388,8 +388,8 @@ class CurveItem(QwtPlotCurve):
388
388
  this method is called to update decimated data (i.e. only update 1/N value
389
389
  with N set in CurveItem.param.decimation).
390
390
  """
391
- self._x = np.array(x, copy=False)
392
- self._y = np.array(y, copy=False)
391
+ self._x = np.asarray(x)
392
+ self._y = np.asarray(y)
393
393
  self._setData(self._x, self._y)
394
394
 
395
395
  def is_empty(self) -> bool:
@@ -144,11 +144,11 @@ class ErrorBarCurveItem(CurveItem):
144
144
  """
145
145
  CurveItem.set_data(self, x, y)
146
146
  if dx is not None:
147
- dx = np.array(dx, copy=False)
147
+ dx = np.asarray(dx)
148
148
  if dx.size == 0:
149
149
  dx = None
150
150
  if dy is not None:
151
- dy = np.array(dy, copy=False)
151
+ dy = np.asarray(dy)
152
152
  if dy.size == 0:
153
153
  dy = None
154
154
  self._dx = dx
@@ -264,9 +264,9 @@ class PolygonMapItem(QwtPlotItem):
264
264
  * x: NumPy array
265
265
  * y: NumPy array
266
266
  """
267
- self._pts = np.array(pts, copy=False)
268
- self._n = np.array(n, copy=False)
269
- self._c = np.array(c, copy=False)
267
+ self._pts = np.asarray(pts)
268
+ self._n = np.asarray(n)
269
+ self._c = np.asarray(c)
270
270
  xmin, ymin = self._pts.min(axis=0)
271
271
  xmax, ymax = self._pts.max(axis=0)
272
272
  self.bounds = QC.QRectF(xmin, ymin, xmax - xmin, ymax - ymin)
@@ -7,8 +7,9 @@
7
7
 
8
8
  # guitest: show
9
9
 
10
+ import numpy as np
11
+ import scipy.integrate as spt
10
12
  from guidata.qthelpers import qt_app_context
11
- from numpy import linspace, sin, trapz
12
13
 
13
14
  from plotpy.builder import make
14
15
  from plotpy.tests import vistools as ptv
@@ -16,8 +17,8 @@ from plotpy.tests import vistools as ptv
16
17
 
17
18
  def test_computations():
18
19
  """Test computations"""
19
- x = linspace(-10, 10, 1000)
20
- y = sin(sin(sin(x)))
20
+ x = np.linspace(-10, 10, 1000)
21
+ y = np.sin(np.sin(np.sin(x)))
21
22
  with qt_app_context(exec_loop=True):
22
23
  curve = make.curve(x, y, "ab", "b")
23
24
  range = make.range(-2, 2)
@@ -26,7 +27,7 @@ def test_computations():
26
27
  )
27
28
 
28
29
  disp1 = make.computation(
29
- range, "BL", "trapz=%g", curve, lambda x, y: trapz(y, x)
30
+ range, "BL", "trapz=%g", curve, lambda x, y: spt.trapezoid(y, x)
30
31
  )
31
32
 
32
33
  disp2 = make.computations(
@@ -7,6 +7,7 @@
7
7
 
8
8
  import numpy as np
9
9
  import pytest
10
+ from guidata.qthelpers import qt_app_context
10
11
 
11
12
  from plotpy.builder import make
12
13
  from plotpy.tests.unit.test_builder_curve import show_items_qtbot
@@ -61,28 +62,30 @@ def _make_annotation(
61
62
  ],
62
63
  )
63
64
  def test_builder_annotation_params(method):
64
- items = []
65
- for show_label in [True, False]:
66
- items.append(
67
- _make_annotation(
68
- method,
69
- title="title",
70
- subtitle="subtitle",
71
- show_label=show_label,
65
+ """Test PlotBuilder annotation factory method parameters"""
66
+ with qt_app_context(exec_loop=False):
67
+ items = []
68
+ for show_label in [True, False]:
69
+ items.append(
70
+ _make_annotation(
71
+ method,
72
+ title="title",
73
+ subtitle="subtitle",
74
+ show_label=show_label,
75
+ )
72
76
  )
73
- )
74
- for show_computations in [True, False]:
75
- items.append(_make_annotation(method, show_computations=show_computations))
76
- for show_subtitle in [True, False]:
77
- items.append(_make_annotation(method, show_subtitle=show_subtitle))
78
- for format in ["%f", "%e"]:
79
- items.append(_make_annotation(method, format=format))
80
- for uncertainty in [0.0, 1.0]:
81
- items.append(_make_annotation(method, uncertainty=uncertainty))
82
- for transform_matrix in [None, np.identity(3)]:
83
- items.append(_make_annotation(method, transform_matrix=transform_matrix))
84
- for readonly in [True, False]:
85
- items.append(_make_annotation(method, readonly=readonly))
86
- for private in [True, False]:
87
- items.append(_make_annotation(method, private=private))
88
- show_items_qtbot(items)
77
+ for show_computations in [True, False]:
78
+ items.append(_make_annotation(method, show_computations=show_computations))
79
+ for show_subtitle in [True, False]:
80
+ items.append(_make_annotation(method, show_subtitle=show_subtitle))
81
+ for format in ["%f", "%e"]:
82
+ items.append(_make_annotation(method, format=format))
83
+ for uncertainty in [0.0, 1.0]:
84
+ items.append(_make_annotation(method, uncertainty=uncertainty))
85
+ for transform_matrix in [None, np.identity(3)]:
86
+ items.append(_make_annotation(method, transform_matrix=transform_matrix))
87
+ for readonly in [True, False]:
88
+ items.append(_make_annotation(method, readonly=readonly))
89
+ for private in [True, False]:
90
+ items.append(_make_annotation(method, private=private))
91
+ show_items_qtbot(items)
@@ -7,7 +7,7 @@
7
7
 
8
8
  import numpy as np
9
9
  import pytest
10
- from guidata.qthelpers import exec_dialog
10
+ from guidata.qthelpers import exec_dialog, qt_app_context
11
11
  from qtpy.QtCore import Qt
12
12
  from qwt import QwtPlotCurve
13
13
 
@@ -43,8 +43,9 @@ def _make_curve_style(shade, curvestyle, baseline):
43
43
  @pytest.mark.parametrize("baseline", [0.0])
44
44
  def test_builder_curve_curve_style(shade, curvestyle, baseline):
45
45
  """Test curve parameters of curve() method"""
46
- curve = _make_curve_style(shade, curvestyle, baseline)
47
- show_items_qtbot([curve], "curve")
46
+ with qt_app_context(exec_loop=False):
47
+ curve = _make_curve_style(shade, curvestyle, baseline)
48
+ show_items_qtbot([curve], "curve")
48
49
 
49
50
 
50
51
  @pytest.mark.parametrize("shade", [0, 0.4, 1.0])
@@ -52,8 +53,9 @@ def test_builder_curve_curve_style(shade, curvestyle, baseline):
52
53
  @pytest.mark.parametrize("baseline", [0.0, 1.0])
53
54
  def test_builder_curve_curve_shade_baseline(shade, curvestyle, baseline):
54
55
  """Test curve parameters of curve() method"""
55
- curve = _make_curve_style(shade, curvestyle, baseline)
56
- show_items_qtbot([curve], "curve")
56
+ with qt_app_context(exec_loop=False):
57
+ curve = _make_curve_style(shade, curvestyle, baseline)
58
+ show_items_qtbot([curve], "curve")
57
59
 
58
60
 
59
61
  def _make_curve_dsamp(dsamp_factor, use_dsamp):
@@ -70,16 +72,18 @@ def _make_curve_dsamp(dsamp_factor, use_dsamp):
70
72
  @pytest.mark.parametrize("use_dsamp", [True])
71
73
  def test_builder_curve_dsamp_on(dsamp_factor, use_dsamp):
72
74
  """Test downsampling parameters of curve() method: use_dsamp=True"""
73
- curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
74
- show_items_qtbot([curve], "curve")
75
+ with qt_app_context(exec_loop=False):
76
+ curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
77
+ show_items_qtbot([curve], "curve")
75
78
 
76
79
 
77
80
  @pytest.mark.parametrize("dsamp_factor", [1, 2])
78
81
  @pytest.mark.parametrize("use_dsamp", [False])
79
82
  def test_builder_curve_dsamp_off(dsamp_factor, use_dsamp):
80
83
  """Test downsampling parameters of curve() method: use_dsamp=False"""
81
- curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
82
- show_items_qtbot([curve], "curve")
84
+ with qt_app_context(exec_loop=False):
85
+ curve = _make_curve_dsamp(dsamp_factor, use_dsamp)
86
+ show_items_qtbot([curve], "curve")
83
87
 
84
88
 
85
89
  def _make_curve_linestyle(color, linestyle, linewidth):
@@ -102,8 +106,9 @@ def _make_curve_linestyle(color, linestyle, linewidth):
102
106
  @pytest.mark.parametrize("linewidth", [1, 2])
103
107
  def test_builder_curve_line_style(color, linestyle, linewidth):
104
108
  """Test line parameters of curve() method"""
105
- curve = _make_curve_linestyle(color, linestyle, linewidth)
106
- show_items_qtbot([curve], "curve")
109
+ with qt_app_context(exec_loop=False):
110
+ curve = _make_curve_linestyle(color, linestyle, linewidth)
111
+ show_items_qtbot([curve], "curve")
107
112
 
108
113
 
109
114
  @pytest.mark.parametrize("color", ["red", "blue"])
@@ -111,8 +116,9 @@ def test_builder_curve_line_style(color, linestyle, linewidth):
111
116
  @pytest.mark.parametrize("linewidth", [1, 2])
112
117
  def test_builder_curve_line_color(color, linestyle, linewidth):
113
118
  """Test line parameters of curve() method"""
114
- curve = _make_curve_linestyle(color, linestyle, linewidth)
115
- show_items_qtbot([curve], "curve")
119
+ with qt_app_context(exec_loop=False):
120
+ curve = _make_curve_linestyle(color, linestyle, linewidth)
121
+ show_items_qtbot([curve], "curve")
116
122
 
117
123
 
118
124
  def _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor):
@@ -160,8 +166,9 @@ def test_builder_curve_marker_params_symbol(
160
166
  marker, markersize, markerfacecolor, markeredgecolor
161
167
  ):
162
168
  """Test marker parameters of curve() methodg"""
163
- curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
164
- show_items_qtbot([curve], "curve")
169
+ with qt_app_context(exec_loop=False):
170
+ curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
171
+ show_items_qtbot([curve], "curve")
165
172
 
166
173
 
167
174
  @pytest.mark.parametrize("marker", ["Cross"])
@@ -172,5 +179,6 @@ def test_builder_curve_marker_size_color(
172
179
  marker, markersize, markerfacecolor, markeredgecolor
173
180
  ):
174
181
  """Test marker parameters of curve() methodg"""
175
- curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
176
- show_items_qtbot([curve], "curve")
182
+ with qt_app_context(exec_loop=False):
183
+ curve = _make_curve_marker(marker, markersize, markerfacecolor, markeredgecolor)
184
+ show_items_qtbot([curve], "curve")
@@ -7,6 +7,7 @@
7
7
 
8
8
  import numpy as np
9
9
  import pytest
10
+ from guidata.qthelpers import qt_app_context
10
11
 
11
12
  from plotpy.builder import make
12
13
  from plotpy.constants import LUTAlpha
@@ -61,55 +62,64 @@ def _make_image(
61
62
  ],
62
63
  )
63
64
  def test_builder_image_alpha_function(alpha_function):
64
- item = _make_image(alpha_function=alpha_function)
65
- show_items_qtbot([item])
65
+ with qt_app_context(exec_loop=False):
66
+ item = _make_image(alpha_function=alpha_function)
67
+ show_items_qtbot([item])
66
68
 
67
69
 
68
70
  @pytest.mark.parametrize(
69
71
  "xdata,ydata", [[[None, None], [None, None]], [[-10, 10], [-10, 10]]]
70
72
  )
71
73
  def test_builder_image_xdata_ydata(xdata, ydata):
72
- item = _make_image(xdata=xdata, ydata=ydata)
73
- show_items_qtbot([item])
74
+ with qt_app_context(exec_loop=False):
75
+ item = _make_image(xdata=xdata, ydata=ydata)
76
+ show_items_qtbot([item])
74
77
 
75
78
 
76
79
  @pytest.mark.parametrize("pixel_size", [None, 1.0, (1.0, 2.0)])
77
80
  def test_builder_image_pixel_size(pixel_size):
78
- item = _make_image(pixel_size=pixel_size)
79
- show_items_qtbot([item])
81
+ with qt_app_context(exec_loop=False):
82
+ item = _make_image(pixel_size=pixel_size)
83
+ show_items_qtbot([item])
80
84
 
81
85
 
82
86
  @pytest.mark.parametrize("center_on", [None, [1.0, 3.0]])
83
87
  def test_builder_image_center_on(center_on):
84
- item = _make_image(center_on=center_on, pixel_size=(1.0, 1.0))
85
- show_items_qtbot([item])
88
+ with qt_app_context(exec_loop=False):
89
+ item = _make_image(center_on=center_on, pixel_size=(1.0, 1.0))
90
+ show_items_qtbot([item])
86
91
 
87
92
 
88
93
  @pytest.mark.parametrize("interpolation", ["nearest", "linear", "antialiasing"])
89
94
  def test_builder_image_interpolation(interpolation):
90
- item = _make_image(interpolation=interpolation)
91
- show_items_qtbot([item])
95
+ with qt_app_context(exec_loop=False):
96
+ item = _make_image(interpolation=interpolation)
97
+ show_items_qtbot([item])
92
98
 
93
99
 
94
100
  @pytest.mark.parametrize("background_color", [None, "red"])
95
101
  def test_builder_image_background_color(background_color):
96
- item = _make_image(background_color=background_color)
97
- show_items_qtbot([item])
102
+ with qt_app_context(exec_loop=False):
103
+ item = _make_image(background_color=background_color)
104
+ show_items_qtbot([item])
98
105
 
99
106
 
100
107
  @pytest.mark.parametrize("eliminate_outliers", [None, 3.0])
101
108
  def test_builder_image_eliminate_outliers(eliminate_outliers):
102
- item = _make_image(eliminate_outliers=eliminate_outliers)
103
- show_items_qtbot([item])
109
+ with qt_app_context(exec_loop=False):
110
+ item = _make_image(eliminate_outliers=eliminate_outliers)
111
+ show_items_qtbot([item])
104
112
 
105
113
 
106
114
  @pytest.mark.parametrize("lut_range", [None, [0.0, 100.0]])
107
115
  def test_builder_image_lut_range(lut_range):
108
- item = _make_image(lut_range=lut_range)
109
- show_items_qtbot([item])
116
+ with qt_app_context(exec_loop=False):
117
+ item = _make_image(lut_range=lut_range)
118
+ show_items_qtbot([item])
110
119
 
111
120
 
112
121
  @pytest.mark.parametrize("lock_position", [None, True, False])
113
122
  def test_builder_image_lock_position(lock_position):
114
- item = _make_image(lock_position=lock_position)
115
- show_items_qtbot([item])
123
+ with qt_app_context(exec_loop=False):
124
+ item = _make_image(lock_position=lock_position)
125
+ show_items_qtbot([item])
@@ -7,6 +7,7 @@
7
7
 
8
8
  import numpy as np
9
9
  import pytest
10
+ from guidata.qthelpers import qt_app_context
10
11
 
11
12
  from plotpy.builder import make
12
13
  from plotpy.tests import get_path
@@ -37,18 +38,20 @@ def _make_standard_shape(
37
38
  [make.segment, make.rectangle, make.circle, make.ellipse],
38
39
  )
39
40
  def test_builder_standard_shape(method):
40
- items = []
41
- items.append(_make_standard_shape(method, title="title"))
42
- show_items_qtbot(items)
41
+ with qt_app_context(exec_loop=False):
42
+ items = []
43
+ items.append(_make_standard_shape(method, title="title"))
44
+ show_items_qtbot(items)
43
45
 
44
46
 
45
47
  def test_builder_polygon():
46
48
  items = []
47
49
  x = np.linspace(0, 1, 10)
48
50
  y = x**2
49
- for closed in [True, False]:
50
- items.append(make.polygon(x, y, closed=closed, title="title"))
51
- show_items_qtbot(items)
51
+ with qt_app_context(exec_loop=False):
52
+ for closed in [True, False]:
53
+ items.append(make.polygon(x, y, closed=closed, title="title"))
54
+ show_items_qtbot(items)
52
55
 
53
56
 
54
57
  def test_builder_svgshape():
@@ -56,9 +59,10 @@ def test_builder_svgshape():
56
59
  svg_path = get_path("svg_target.svg")
57
60
  with open(svg_path, "rb") as f:
58
61
  svg_data = f.read()
59
- for shape_str in ("circle", "rectangle", "square"):
60
- for data_or_path in (svg_data, svg_path):
61
- items.append(
62
- make.svg(shape_str, data_or_path, 0.0, 0.0, 1.0, 1.0, title="title")
63
- )
64
- show_items_qtbot(items)
62
+ with qt_app_context(exec_loop=False):
63
+ for shape_str in ("circle", "rectangle", "square"):
64
+ for data_or_path in (svg_data, svg_path):
65
+ items.append(
66
+ make.svg(shape_str, data_or_path, 0.0, 0.0, 1.0, 1.0, title="title")
67
+ )
68
+ show_items_qtbot(items)
@@ -216,7 +216,7 @@ def test_edit_point_tool():
216
216
  tool.reset_arrays()
217
217
  assert tool.get_changes() == {}
218
218
  x_arr, y_arr = curve_item.get_data()
219
- assert np.in1d(x_arr, orig_x).all() and np.in1d(y_arr, orig_y).all()
219
+ assert np.isin(x_arr, orig_x).all() and np.isin(y_arr, orig_y).all()
220
220
 
221
221
  exec_dialog(win)
222
222
 
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import os
3
4
  from typing import TYPE_CHECKING, Callable, TypeVar
4
5
 
5
6
  import numpy as np
@@ -270,6 +271,7 @@ def test_select_all_items():
270
271
  exec_dialog(win)
271
272
 
272
273
 
274
+ @pytest.mark.skipif(os.name != "nt", reason="Only tested on Windows.")
273
275
  def test_rotate_with_mouse():
274
276
  """Test rotating an image item with the mouse."""
275
277
  with qt_app_context(exec_loop=False) as qapp:
@@ -325,6 +327,7 @@ def test_rectangular_selection():
325
327
  exec_dialog(win)
326
328
 
327
329
 
330
+ @pytest.mark.skipif(os.name != "nt", reason="Only tested on Windows.")
328
331
  @pytest.mark.parametrize(
329
332
  "mouse_path, rotation",
330
333
  [
@@ -49,7 +49,10 @@ def test_image_mask_tool(shape_tool_cls: type[RectangularShapeTool], inside: boo
49
49
  with execenv.context(accept_dialogs=True):
50
50
  shape_tool.add_shape_to_plot(plot, pos0, pos1)
51
51
  mask_tool.apply_mask()
52
- mask_tool.clear_mask()
52
+
53
+ # Clear mask
54
+ item.unmask_all()
55
+ plot.replot()
53
56
 
54
57
  shape_tool.add_shape_to_plot(plot, pos0, pos1)
55
58
  mask_tool.remove_shapes()
@@ -0,0 +1,94 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Licensed under the terms of the BSD 3-Clause
4
+ # (see plotpy/LICENSE for details)
5
+
6
+ """Test plotting of a curve with PlotDialog"""
7
+
8
+ import numpy as np
9
+ from guidata.qthelpers import exec_dialog, qt_app_context
10
+ from qwt import QwtPlotItem
11
+
12
+ from plotpy.builder import make
13
+ from plotpy.plot import PlotWidget
14
+ from plotpy.tools import (
15
+ AntiAliasingTool,
16
+ AxisScaleTool,
17
+ CurveStatsTool,
18
+ DownSamplingTool,
19
+ )
20
+
21
+
22
+ def test_plot_curve():
23
+ """Test plotting of a curve with PlotDialog"""
24
+ x = np.linspace(-10, 10, 200)
25
+ y = np.sin(x)
26
+
27
+ with qt_app_context(exec_loop=False):
28
+ curve = make.curve(x, y, color="g", curvestyle="Sticks")
29
+ curve.setTitle("Curve")
30
+
31
+ win = make.dialog(toolbar=True, type="curve")
32
+ plot = win.manager.get_plot()
33
+ plot.add_item(curve)
34
+
35
+ win.show()
36
+
37
+ assert isinstance(win.plot_widget, PlotWidget)
38
+ assert win.plot_widget.plot == plot
39
+
40
+ # Check that specific curve tools are added
41
+ for curve_tool_class in (
42
+ CurveStatsTool,
43
+ AntiAliasingTool,
44
+ AxisScaleTool,
45
+ DownSamplingTool,
46
+ ):
47
+ tool = win.manager.get_tool(curve_tool_class)
48
+ assert tool is not None, f"Tool of type {curve_tool_class} not found"
49
+
50
+ exec_dialog(win)
51
+
52
+
53
+ def test_plot_curve_anti_aliasing():
54
+ """Test Anti-aliasing tool"""
55
+ x = np.linspace(-10, 10, 200)
56
+ y = np.sin(x)
57
+
58
+ with qt_app_context(exec_loop=False):
59
+ curve = make.curve(x, y, color="g")
60
+
61
+ win = make.dialog(toolbar=True, type="curve")
62
+ plot = win.manager.get_plot()
63
+ plot.add_item(curve)
64
+
65
+ win.show()
66
+
67
+ assert isinstance(win.plot_widget, PlotWidget)
68
+ assert win.plot_widget.plot == plot
69
+
70
+ anti_aliasing_tool = win.manager.get_tool(AntiAliasingTool)
71
+ assert anti_aliasing_tool is not None, "AntiAliasingTool not found"
72
+
73
+ original_img = plot.grab().toImage()
74
+
75
+ # Activate anti aliasing
76
+ anti_aliasing_tool.activate(True)
77
+ assert plot.antialiased
78
+ assert curve.testRenderHint(QwtPlotItem.RenderAntialiased)
79
+ antialiased_img = plot.grab().toImage()
80
+ assert antialiased_img != original_img
81
+
82
+ # Deactivate anti aliasing
83
+ anti_aliasing_tool.activate(False)
84
+ assert not plot.antialiased
85
+ assert not curve.testRenderHint(QwtPlotItem.RenderAntialiased)
86
+ aliased_img = plot.grab().toImage()
87
+ assert original_img == aliased_img
88
+
89
+ exec_dialog(win)
90
+
91
+
92
+ if __name__ == "__main__":
93
+ test_plot_curve()
94
+ test_plot_curve_anti_aliasing()
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Licensed under the terms of the BSD 3-Clause
4
+ # (see plotpy/LICENSE for details)
5
+
6
+ """Export tools unit tests"""
7
+
8
+ from unittest.mock import patch
9
+
10
+ import numpy as np
11
+ from guidata.qthelpers import qt_app_context
12
+ from qtpy import QtWidgets as QW
13
+
14
+ from plotpy.builder import make
15
+ from plotpy.tools.curve import export_curve_data
16
+
17
+
18
+ def test_export_curve(tmpdir):
19
+ """Test export of a curve"""
20
+ x = np.linspace(-10, 10, 200)
21
+ y = x + 1
22
+
23
+ with qt_app_context(exec_loop=False):
24
+ curve = make.curve(x, y, color="g")
25
+
26
+ dest = tmpdir / "output.txt"
27
+ with patch.object(QW.QFileDialog, "getSaveFileName") as gsf_mock:
28
+ gsf_mock.return_value = (str(dest), "")
29
+ export_curve_data(curve)
30
+
31
+ assert dest.exists()
32
+ data = dest.readlines()
33
+ assert len(data) == 200
34
+ for line in data:
35
+ x, y = line.split(",")
36
+ assert float(y) == float(x) + 1